WHERE 子句中的 SQL 查询执行顺序

标签 sql

Query 中的执行顺序是什么,例如:

SELECT * FROM [users] WHERE [userid] = 50001 AND [username] = 'new user'

我的问题是首先匹配什么 - [userid] 或 [username]。

所以会影响执行时间。

任何改进此查询的建议都将被采纳。

最佳答案

答案取决于您为 SQL 引擎提供的索引。如 userid已编入索引,但 username不是,引擎很可能以userid开头;如果 username已编入索引,但 userid不是,那么引擎可能会以名称开头;如果两个字段都被索引,引擎将搜索该索引,并通过内部 id 查找行。请注意,所有这些都高度依赖于您使用的 RDBMS。当行数较少时,一些引擎会完全放弃索引搜索,转而使用全表扫描。

关于WHERE 子句中的 SQL 查询执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686289/

相关文章:

mysql - 如何获取每个用户给出解决方案的多次平均值(查询)

mysql - 选择另一个 ID 数量最多的 ID

sql - Sequelize 中的唯一值

sql - 文本文件的 Oracle 数据类型?

sql - SQL 中 Case 语句的语法错误

sql - 为什么稀疏列中的非空值在 SQL Server 2008 中占用额外空间

c# - Linq to SQL Left Join、Order 和 Group By Count

mysql - 如何计算从开始到现在过去了多少天

php - MySQL GROUP BY 和 ORDER BY DESC

php/mysql 邮政编码邻近搜索