我在MySQL表table
中有以下数据:
ID
:int(11)[这是主键]
Date
:日期
我运行MySQL查询:
SELECT * from table WHERE Date=CURDATE() and ID=1;
这需要0.6到1.2秒。
有没有办法优化此查询以更快地获得结果?
我的目标是找出今天是否已经有ID
的记录。
答案 0 :(得分:3)
在ID
和Date
上添加索引。
答案 1 :(得分:1)
您可以在最后添加limit 1
,因为您正在搜索主键,最大结果为1.
如果您只是想知道它是否存在,您可以用*
替换ID
以仅选择ID。
此外,如果您还没有,则确实需要添加索引。
答案 2 :(得分:1)
SET @cur_date = CURDATE()
... WHERE Date = @cur_date ...
然后创建Date,ID的索引(顺序很重要,它应该与您查询的顺序相匹配)。
通常,在执行查询并将它们存储到变量之前调用函数允许SQL将它们视为数字而不是函数,这往往允许它使用更快的查询算法。