例如:
UPDATE tab_name SET col_name=? WHERE col_name='a_unique_str' LIMIT 1;
列col_name
没有索引,但我们知道'a_unique_str'
确实是唯一的。 LIMIT 1
更快地提出这样的查询吗?
(做一个简单的基准测试并不困难,但我想知道它是否在不同的数据库中以相同的方式工作,或者与数据库调优有任何可能的连接。)
(像甲骨文这样的某些数据库没有LIMIT
。我认为它们都有相同的条款。)
答案 0 :(得分:3)
如果您真的想了解某个特定的数据库,那么您应该测试该数据库上的代码。
但是,代码应该更快。 limit 1
表示在更新一行后停止,因此它将在第一次匹配后停止。如果没有limit 1
,则数据库必须考虑所有可以匹配条件的行。如果没有索引,则需要查看所有行中的值。
如果匹配的行是遇到的第一行之一,速度的提高可能会非常大。或者,如果匹配行靠近ned,则可以忽略不计。期望查询将执行全表扫描,limit 1
将节省一半的全表扫描。