四时宝库

程序员的知识宝库

怎么样添加最优索引,简单粗暴的添加索引

SQL 全面优化之索引啊重要?

想了好久索引的重要性应该怎么讲?讲原理结构?我估计大部分人觉得不如看手册,也花不了那么多时间详细研究了。光写具体操作?如果明白原理一样不会活学活用。举例说明?情况太多也写不全....到底该怎么写呢?

我们讲CPU、内存、磁盘、语句等等等都要讲到索引的重要性,在校学生刚刚开始学数据库,都知道索引对语句性能的重要性。但他们可能不知道,对语句的重要性就是对整个系统的重要性!

抛出一个问题 :你相信一条语句就能让你的大系统挂掉么?


  • 开篇小测验

下面这样一个小SQL 你该怎么样添加最优索引

两个表上现在只有聚集索引

bigproduct 表上已经有聚集索引 ProductID

bigtransactionhistory 表上已经有聚集索引 TransactionIDselect p.productnumber,p.reorderpoint,th.Quantityfrom bigproduct as pjoin bigtransactionhistory as th on th.productid=p.productid and th.TransactionDate > p.SellStartDatewhere p.name in ('LL Crankarm1000','ML Crankarm1000') and th.TransactionDate > '2010-01-01'

你是否一眼就能看出来呢?

答案将在文章中逐步揭晓~~~

  • 简单粗暴的添加索引

看过我前面文章的看官们一定会发现我很喜欢用“简单粗暴”这个词,一是因为词汇量小文笔也差,真心用不出高大上的词儿! 再一个,你们不喜欢简单粗暴么~~干货最重要,不是么?

首先我们看一下没有优化前的执行计划

clustered index scan 这其实就是表扫描,不是table scan 只是因为表上有聚集索引

可以看出这个查询俩表都使用了表扫描!

高能预警:优化器可不是什么时候都这么智能的...由于缓存计划或优化器抽风等原因,也会出现优化器用了这种索引,导致你的语句奇慢,读取飙升直接影响到你的内存、磁盘、CPU资源!另外如果这样一条语句是系统中一条很频繁运行的语句,你的系统就挂了!没错就挂了!这就是开篇抛出的问题就是因为一条语句!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接