mysql - 使用ID从数据库获取数据时使用TOP、Limit

标签 mysql sql sql-server

我在互联网上的某个地方读到使用 TOP (MSSQL) 或 LIMIT (MySQL) 在您的查询中是最佳实践。

他解释:如果数据库有数百万条记录,并且如果您使用限制,那么数据库算法在获取您在LIMIT中请求的记录时将停止过滤其他数据。或TOP

我的问题是当您使用 WHERE 获取记录时条件为ID ,所以LIMITTOP确实有什么区别,因为数据库中会有唯一的 id。

PK is applied on that column

SELECT TOP 1 * 
FROM TABLE_MASTER 
WHERE ID = 10` 

或者

SELECT * 
FROM TABLE_MASTER 
WHERE ID = 10 LIMIT 1`

如果这个问题已经问过,请给我链接,因为我无法找到 stackoverflow 线程。

最佳答案

如果您有一个 WHERE 子句通过唯一 id 选择特定行,则查询已经受到限制。它将仅扫描与特定值匹配的单行。在这种情况下,使用 TOPLIMIT 没有任何好处。

如果有人对您说“功能 X 是最佳实践”,这并不意味着您应该使用功能 X,即使它没有什么区别。

如果 WHERE 子句中没有条件或需要匹配大量行的条件,则使用 TOPLIMIT 非常有用。您可以限制行的数量,而不是返回不需要的数千(甚至数百万)行。

关于mysql - 使用ID从数据库获取数据时使用TOP、Limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20796595/

相关文章:

mysql - SQL 查询,带有 NULL 的 LEFT JOIN

mysql - 在 mysql 中向左移动的非空列

c# - 通过在文本框中输入进行过滤

sql - 优化执行缓慢的 greatest-n-per-group 查询

sql - 您可以为公共(public)表表达式创建嵌套的WITH子句吗?

php - 事件记录和 PHP : the best way to define different associations between two models

PHP - MySQL 到 PDO

MySQL:计算新列(将天转换为周)以获得产品的每周销售额

mysql - SQL 问题,星期日是一周的第一天?

mysql - 如何在另一台计算机上安装我的 MAMP 数据库?