我在互联网上的某处读到,在您的查询中使用TOP
(MSSQL)或LIMIT
(MySQL)是最佳做法。
他解释说:如果数据库有数百万条记录,如果你使用限制,那么当数据库算法获得你在LIMIT
或TOP
中请求的记录时,它将停止过滤其他数据。
我的问题是,当您使用WHERE
条件使用ID
条件获取记录时,LIMIT
或TOP
确实会产生任何差异,因为它们将成为唯一ID数据库中。
PK适用于该列
SELECT TOP 1 *
FROM TABLE_MASTER
WHERE ID = 10`
OR
SELECT *
FROM TABLE_MASTER
WHERE ID = 10 LIMIT 1`
如果已经问过这个问题,请给我链接,因为我无法找到stackoverflow线程。
答案 0 :(得分:3)
如果您有WHERE子句通过唯一ID选择特定行,则查询已被限制。它将仅扫描与特定值匹配的单行。在这种情况下使用TOP
或LIMIT
没有任何好处。
如果有人对你说,“功能X是最佳做法”并不意味着你应该使用功能X,即使它没有任何区别。
如果WHERE子句中没有条件,或者条件与大量行匹配,则使用TOP
或LIMIT
非常有用。
答案 1 :(得分:0)
如果ID不可能是唯一的,则可能会找到多条记录,如果您只期望一条记录,则没有LIMIT或TOP语句可能会弄乱您的代码。因此,为了以防万一,将LIMIT / TOP语句放在那里通常没有什么坏处。如果ID已经是一个独特的PK,它将不会对有效编码的数据库引擎(也就是所有这些)产生任何影响。