WHERE子句中的SQL Query执行顺序

nir*_*rav 4 sql

Query中的执行顺序如下:

SELECT * FROM [users] WHERE [userid] = 50001 AND [username] = 'new user'
Run Code Online (Sandbox Code Playgroud)

我的问题是首先匹配的内容 - [userid]或[username].

因此会影响执行时间.

任何改进此查询的建议都将受到关注.

das*_*ght 7

答案取决于您为SQL引擎提供的索引.如果userid被索引但username不是,则引擎很可能开始userid; 如果username是索引但userid不是,则引擎可能以名称开头; 如果两个字段都已编制索引,则引擎将搜索该索引,并按内部ID查找行.请注意,所有这些都高度依赖于您使用的RDBMS.当行数较少时,某些引擎会完全放弃索引搜索以支持全表扫描.