浅析SQL Server的聚焦使用索引和查询执行计划
16lz
2022-01-06
前言
上一篇《浅析SQL Server 聚焦索引对非聚集索引的影响》我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解。
透过索引来看查询执行计划
我们首先来看看第一个例子
1、默认使用索引
USE TSQL2012GOSELECT orderid FROM Sales.OrdersSELECT * FROM Sales.Orders
2、强制主键使用聚集索引
强制使用索引我们利用With(index(索引名称))来创建,如下:
USE TSQL2012GOSELECT orderid FROM Sales.Orders WITH(INDEX(PK_Orders))SELECT * FROM Sales.Orders WITH(INDEX(PK_Orders))
3、强制使用非聚集索引
我们继续往下看,对查询强制使用非聚集索引查找,如下:
USE TSQL2012GOSELECT orderid FROM Sales.Orders WITH(INDEX(idx_nc_custid))SELECT * FROM Sales.Orders WITH(INDEX(idx_nc_custid))
总结
通过上述演示我们知道即使创建了聚集索引也不会利用聚集索引检索结果,有时候使用非聚集索引比使用聚集索引会提供更好的性能,当然不能一概而论,二者皆有使用场景。当每一次面试时谈到数据库优化时,第一想到的是索引,然后就没有下文了,如何使用索引,怎么在不同场景使用不同的索引呢?在任何数据库中索引一直都是一个很大的话题且是一个复杂的内容,复杂的内容皆是由简单堆积而成,我们必须如蜗牛般去慢慢研究,抽茧剥丝,最终才会有一个好的效果。简短的内容,深入的理解。
更多相关文章
- MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
- [android源码下载索引贴】微信+二维码那都不是事......
- android触控,先了解MotionEvent
- Android使用service后台更新计划任务
- 系出名门 Android(安卓)系列文章索引
- 系出名门 Android(安卓)系列文章索引
- 系出名门 Android(安卓)系列文章索引
- 系出名门 Android(安卓)系列文章索引
- Android(安卓)自定义Gallery