如何优化MySQL查询'SELECT * from表WHERE Date = CURDATE()和ID = 1;'

时间:2011-05-26 09:15:02

标签: mysql

我在MySQL表table中有以下数据:

ID:int(11)[这是主键]

Date:日期

我运行MySQL查询:

SELECT * from table WHERE Date=CURDATE() and ID=1;

这需要0.6到1.2秒。

有没有办法优化此查询以更快地获得结果?

我的目标是找出今天是否已经有ID的记录。

3 个答案:

答案 0 :(得分:3)

IDDate上添加索引。

CREATE INDEX manual

答案 1 :(得分:1)

您可以在最后添加limit 1,因为您正在搜索主键,最大结果为1.

如果您只是想知道它是否存在,您可以用*替换ID以仅选择ID。

此外,如果您还没有,则确实需要添加索引。

答案 2 :(得分:1)

SET @cur_date = CURDATE()

... WHERE Date = @cur_date ...

然后创建Date,ID的索引(顺序很重要,它应该与您查询的顺序相匹配)。

通常,在执行查询并将它们存储到变量之前调用函数允许SQL将它们视为数字而不是函数,这往往允许它使用更快的查询算法。