LIMIT子句是否更快地更新? (任何数据库引擎)

时间:2015-01-25 06:28:12

标签: sql database sqlite sql-update

例如:

UPDATE tab_name SET col_name=? WHERE col_name='a_unique_str' LIMIT 1;

col_name没有索引,但我们知道'a_unique_str'确实是唯一的。 LIMIT 1更快地提出这样的查询吗?

(做一个简单的基准测试并不困难,但我想知道它是否在不同的数据库中以相同的方式工作,或者与数据库调优有任何可能的连接。)

(像甲骨文这样的某些数据库没有LIMIT。我认为它们都有相同的条款。)

1 个答案:

答案 0 :(得分:3)

如果您真的想了解某个特定的数据库,那么您应该测试该数据库上的代码。

但是,代码应该更快。 limit 1表示在更新一行后停止,因此它将在第一次匹配后停止。如果没有limit 1,则数据库必须考虑所有可以匹配条件的行。如果没有索引,则需要查看所有行中的值。

如果匹配的行是遇到的第一行之一,速度的提高可能会非常大。或者,如果匹配行靠近ned,则可以忽略不计。期望查询将执行全表扫描,limit 1将节省一半的全表扫描。