假设一个表有一个ID列,PRIMARY KEY带有AUTOINCREMENT。
如果我进行如下查询:
SELECT * FROM table WHERE ID = ?
是否需要添加LIMIT 1
?
会增加性能吗?
我正在使用SQLite和PHP的PDO。
答案 0 :(得分:5)
如果它是主键,那么引擎应该做正确的事情。主键索引是unique
索引,因此MySQL知道只有一个匹配值。
但即使没有,对性能的影响也会非常小。引擎将使用主键索引来查找正确的值,直接转到索引中的正确位置。然后它将加载数据页面(以满足select *
)。
然后,它立即停止。或者,它扫描并读取索引中的下一个值,然后停止。额外的开销是读取索引中的下一个值。与加载数据页相比,开销很小。
如果您对此类事情感兴趣,请查看documentation。