Man*_*kal -5 mysql performance sql-server mysql-5.5 query-performance
索引数据会影响查询性能吗?意味着如果我在任何子IN
句中以有序形式将值传递为 1,2,3,4... ,它可以提高查询性能吗?如果我随机传递值 2,5,7,9,1 等会发生什么......
例子 :
Select Name from Emp
where id IN (1,2,3,4) -- Ordered values
Run Code Online (Sandbox Code Playgroud)
或者:
Select Name from Emp
where id IN (4,2,7,98,34) -- Randomly ordered values
Run Code Online (Sandbox Code Playgroud)
其它的办法 :
Select Name from Emp
where id IN (Select empid from trans order by empty) -- Ordered values
Run Code Online (Sandbox Code Playgroud)
我要求 MySql 以及 SQL-Server 数据库。
谁能告诉我数据库引擎如何在上述情况下获得结果(执行计划)?
它们是2个不同的概念
where id IN ( 1,2,3,4)
只是简写 id = 1 OR id = 2 OR id = 3 OR ...
where id IN (Select empid from trans order by empty)
是半连接因此,简单数字列表的值排序没有任何区别
对于半连接,无论如何都应该有一个索引,因为它是一种 JOIN。请注意,子查询中的 ORDER BY 会在 SQL Server 上给出错误,因为它没有意义(除非您使用 TOP)。不确定 MySQL,但我怀疑它会简单地忽略它。
归档时间: |
|
查看次数: |
2894 次 |
最近记录: |