Con*_*oyP 8 mysql optimization
我正在研究的系统的一部分涉及登录mysql,计数经常更新.
插入的数据格式如下:
date | name | count |
-----------+------+-------+
2009-01-12 | alan | 5 |
2009-01-12 | dave | 2 |
2009-01-12 | mary | 1 |
Run Code Online (Sandbox Code Playgroud)
这些数据定期从平面文件中解析,如上所述,为db插入/更新做准备 - 数据库上的唯一键是该(date, name)对.
以前,此系统会检查现有表中是否有给定的记录 datename在决定更新或插入和对的.
我们遇到的问题是,随着这个表的增长,响应时间没有变得更好,我们希望尽可能减少查询数量.
该系统最近更新为运行一个INSERT ... ON DUPLICATE KEY UPDATE查询,这减少了selects 的数量,但我们的常见情况是一定距离是update.
我想知道是否有人知道一个基本上INSERT ... ON DUPLICATE KEY UPDATE是反向的mysql函数,即将尝试更新一行,如果没有匹配则执行插入?
我上面没有说清楚,当我有记录时我想做什么 ('2009-01-12','alan','5')例如,是:
UPDATE table SET count = count+5 WHERE date = '2009-01-12' and name = 'alan';
Run Code Online (Sandbox Code Playgroud)
如果上述操作失败,请插入以上数据.增加一个计数器的需要是为什么REPLACE不起作用.替换执行删除和插入,并且不允许您引用要删除的行,因此count = count + 5不会将先前的count值增加5.
@jasoncohen - INSERT ... ON DUPLICATE KEY UPDATE确实可以完成这项工作,但我想问是否有更优化的方法来做到这一点.
抱歉由于原始措辞不佳导致的任何混乱!
| 归档时间: |
|
| 查看次数: |
3644 次 |
| 最近记录: |