删除employee表的索引
DROP INDEX employee.Idx_emp_username
表 'employee'。扫描计数 1,逻辑读取 371 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
打开IO信息
SET STATISTICS IO ON
SELECT * FROM employee WHERE employee.emp_username in ('刘10000')
消息:
--添加Idx_emp_username聚集索引
CREATE CLUSTERED INDEX Idx_emp_username ON employee (emp_username);
SELECT * FROM employee WHERE employee.emp_username in ('刘10000');
消息:
表 'employee'。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
使用索引后逻辑读取3次,没有使用索引是371次,IN 很好的使用了索引!
下面我们来测试下 LIKE 是否很好的使用索引
删除索引
DROP INDEX employee.Idx_emp_username
打开IO 信息
SET STATISTICS IO ON
执行查询
SELECT * FROM employee WHERE employee.emp_username like ('刘1000%')
消息:
表 'employee'。扫描计数 1,逻辑读取 371 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
添加索引
CREATE CLUSTERED INDEX Idx_emp_username ON employee (emp_username);
SET STATISTICS IO ON
SELECT * FROM employee WHERE employee.emp_username like ( '刘1000%');
表 'employee'。扫描计数 1,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
网上很多优化的文章写到查询不要使用 in like left ,其实自己动手测试下看看查询计划就一幕了然了 。
本文导航
- 第1页: 首页
- 第2页: 优化 Transact-SQL 语句经常使用的语句
- 第3页: 删除employee表的索引