时间:2021-07-01 10:21:17 帮助过:18人阅读
CREATE INDEX EmployeesName ON Employees(FirstName,LastName) INCLUDE(HIREDATE) WITH(ONLINE=ON) GO SELECT FirstName,LastName,HireDate,EmployeeID FROM Employees WHERE FirstName=‘Anne‘
当然也不尽然只要查询列存在索引覆盖就执行索引查找,这取决于扫描的内容的多少,所以对于索引的利用程度还取决获取内容的多少
来举个例子:
CREATE INDEX NameIndex ON person.contact(FirstName,LastName) GO SELECT * FROM Person.Contact WHERE FirstName LIKE ‘K%‘ SELECT * FROM Person.Contact WHERE FirstName LIKE ‘Y%‘ GO
完全相同的查询语句,来看执行计划:
完全相同的查询语句,产生的查询计划完全不同,一个是索引扫描,一个则是高效的索引查找。
这里我只告诉你:FirstName like ‘K%‘的有1255行;而FirstName like ‘Y%‘只有37行,其中
其实,关于这里的原因就是统计信息在作怪了。
所以,特定的T-SQL语句不一定生成特定的查询计划,同样特定的查询计划不一定是最优的方式,影响的它的因素很多:关于索引、关于硬件、关于表内容、关于统计信息等诸多因素影响。
SQL Server 查询优化器运行方式
标签:title 大于 img 字符串 价格 情况下 toolbar 作用 不同