我在MySQL表table中有以下数据
ID:int(11)这是主键
Date:日期
然后我运行MySQL查询:
SELECT * from table WHERE Date=CURDATE() and ID=1;这需要0.6到1.2秒。
有没有办法优化这个查询以更快地获得结果?
我的目标是看看我是否已经有了这个ID的今天的记录。
发布于 2011-05-26 17:18:48
在ID和Date上添加索引。
参见CREATE INDEX manual。
发布于 2011-05-26 17:37:39
您可以在末尾添加一个limit 1,因为您正在搜索主键,因此最大结果数为1。
如果你只想知道它是否存在,你可以用ID替换*,只选择ID。
此外,如果您还没有添加索引,那么您确实需要添加索引。
发布于 2011-06-21 08:15:26
设置@cur_date =曲线()
...WHERE日期= @cur_date ...
然后创建一个Date,ID索引(顺序很重要,它应该与您查询的顺序相匹配)。
通常,在执行查询之前调用函数并将它们存储到变量中会让SQL将它们视为数字而不是函数,这往往会允许它使用更快的查询算法。
https://stackoverflow.com/questions/6136238
复制相似问题