楼主: pipihappy8888

【大话IT】专家坐堂:SQL优化从索引设计做起!

[复制链接]
论坛徽章:
0
21#
发表于 2015-6-12 23:18 | 只看该作者
咨询下管理人员  我的博客怎么锁定了?

使用道具 举报

回复
论坛徽章:
194
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
22#
发表于 2015-6-14 08:37 | 只看该作者
1078061200 发表于 2015-6-12 23:18
咨询下管理人员  我的博客怎么锁定了?

估计你的blog包含了敏感关键字。

使用道具 举报

回复
论坛徽章:
22
秀才
日期:2015-06-17 15:51:02知识
日期:2015-08-11 10:37:42秀才
日期:2015-08-13 09:04:39秀才
日期:2015-09-21 09:46:16秀才
日期:2015-11-12 17:43:40秀才
日期:2015-12-14 14:47:54秀才
日期:2015-12-14 14:56:09秀才
日期:2016-01-05 09:35:58秀才
日期:2016-01-13 12:14:26秀才
日期:2016-02-18 09:31:52
23#
发表于 2015-6-15 14:33 | 只看该作者
lfree 发表于 2015-6-12 21:35
好像这本是讲索引原理的书,我记得英文版我看了开头,后面没看.

我讲讲我自己遇到的例子:

沟通一下哈,业界项目的方式导致了这样的情况

1.索引谁来建立,开发吗?还是dba,国内许多项目在前期根本没有dba的介入.许多项目一出来就是垃圾.豆腐渣工程.

实际都是开发的人在做,或者发现后来性能有问题再做,在个人了解到很多项目中,根本没有真正的DBA角色,这种能力大牛基本是公司的一个核心,轻易不会放出来到项目中,导致项目里面没有真正对DB的负责人

2.索引优化几乎是立杆见影的事情.就是<品悟性能>的作者说的那样,我仅仅会建索引.

项目初期通常没有索引问题也不是非常大,因为数据量还没起来,而发生问题的时候,各方第一时间也是考虑要不要增加基础架构资源。一般的公司除非自身具有充分的技术团队,对于性能问题的处理定位和解决就看乙方投入什么人了。

3.国内的开发团队存在许多问题,我问过许多开发,基本上从来没人看过执行计划.
因为开发基本不会去考虑这个问题,他们写的时候还没有爆发性能问题。同时他们可能也难以从全面的角度去考虑将来的数据内容和操作的变化。

4.我曾经给他们讲课,当你们写出一条sql语句的时候,脑子里想一想oracle会如何执行.即使事前不想,事后也该想想吧.
5.我对国内的开发实在太失望....
这两点来说,无奈,业界对于进度的时间更甚至于要一个精品,开发和设计能投入的时间和主要精力不得不投入在项目所需要的部分。

使用道具 举报

回复
论坛徽章:
13
2012新春纪念徽章
日期:2012-01-04 11:56:19喜羊羊
日期:2015-03-04 14:52:46马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:10雪铁龙
日期:2013-09-11 10:30:25雪佛兰
日期:2013-08-07 14:34:372013年新春福章
日期:2013-02-25 14:51:24咸鸭蛋
日期:2012-11-01 17:05:28迷宫蛋
日期:2012-06-13 15:28:34
24#
发表于 2015-6-15 15:59 | 只看该作者
本帖最后由 CareySon 于 2015-6-15 16:00 编辑

这本书翻译了?2005年的书,当年我就靠这本书入门的-.-非常好的书,不会过时,推荐

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-10-28 06:00:13暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47
25#
发表于 2015-6-16 13:18 | 只看该作者
工欲善其事,必先利其器啊

使用道具 举报

回复
论坛徽章:
10
秀才
日期:2015-07-14 09:44:30秀才
日期:2015-08-17 13:13:142015年中国系统架构师大会纪念徽章
日期:2015-08-03 13:54:362014系统架构师大会纪念章
日期:2015-08-03 13:54:362013系统架构师大会纪念章
日期:2015-08-03 13:54:362012系统架构师大会纪念章
日期:2015-08-03 13:54:362011系统架构师大会纪念章
日期:2015-08-03 13:54:362010系统架构师大会纪念
日期:2015-08-03 13:54:362009架构师大会纪念徽章
日期:2015-08-03 13:54:36秀才
日期:2015-09-11 10:43:06
26#
发表于 2015-6-16 13:47 | 只看该作者
1. 索引个数对于SQL解析性能的影响
   在关系型的大型数据库(DB2,ORACLE,SQL SERVER,TERADATA等)中,索引主要有两大用途:
   a) 数据约束:主键约束/唯一键约束,主要用于数据表中记录唯一性的检测。
   b) 改善性能:合适的索引,对于数据检索的性能起到了一定的效率提升的作用,对于并发事务之间的锁的问题,有所缓解。
   当然,索引的创建,也并不是只有好处,在一个表上,创建索引后,也可能会带来以下的一些负面影响:
   a)DML操作的性能可能会有所下降,根据工作中的实际情况,每多创建一个索引,对于DML操作,可能会降低约20%的性能。
   b)数据库的运维成本会增加:在对表进行REORG(重组)、RUNSTATS(收集统计信息) 以及进行数据加载时,均会延长处理时间。
   c)空间会增加:索引与表一样,会占用较多的磁盘存储空间。
   
   当然,在实际的生产工作中,在一个表上创建索引,可能更多的还是希望提高SELECT语句的效率。
   表上索引的个数并不是越多越好,CBO在选取被使用的索引时,有两个关键因素是需要考虑的:
   a) 索引的可选性:我的理解是 一个索引键值所能定位的数据量占总记录数的比率,这个比率我们希望越低越好,代表着可选性越高。
      因此,主键索引或唯一性索引的可选性,肯定是最高的。这样一来,如果表上创建了与主键或唯一键冗余的普通索引的话,这个普通
      索引可能不会被CBO选取使用。但却会干扰CBO的判断。
   b)数据的分布均匀程度:在默认的情况下,CBO可能会认为各索引键值所代表的记录数大致相当,如果实际数据的分布不是这种默认情况,
      则可能会造成CBO生成一个较差的执行计划,从而影响语句的执行效率。
      
   有些数据库上,可能会针对表、索引等数据库对象动态的收集统计信息,但这并不代表所有的数据库都有这个功能。因此,在表上创建
   索引后,我们还需收集统计信息,在某些情况下,我们还需要收集字段的分布统计信息 或 字段组合的统计信息。
   
   索引的个数过多,可能代表着CBO在生成执行计划时,所需考虑的数据库对象更多,计算也会更复杂。在一些极端情况下,可能会引起执行计划
   不正确。   


2. 如何有效使用索引和表结构来处理SQL语句
   如何使用索引与表结构来处理SQL语句,最主要的是需要了解SQL语句的特性 以及 本SQL语句所代表的业务逻辑。
   在一个较稳定的应用系统中,表结构一旦确定以后,一般是不会有太大的变更的,可能最多也就是新添加一个或多个字段。而且,在非数据仓库的
   应用系统中,表大多满足3NF的要求。因此,想通过表结构来调整SQL语句,影响面可能较大。
   
   而索引,一般是二叉树的结构,而且是依附于表而存在,可按需创建或删除。而且在实际的生产过程中,调整SQL语句的执行效率,大部分都会使用
   到索引,要想所创建的索引能被合理的利用,关键还在于索引创建前的数据分析:
   a)SQL语句的业务含义及业务场景分析:只有明白了SQL语句的业务逻辑,才能真正的SQL语句的性能进行调整。
   b)所需创建索引的字段的数据分析:包括 字段值域所代表的最大记录行数,NULL值个数,访问频率,值域被修改的频率等关键要素。
   
   另外,还需要考虑到索引的IO与全表扫描的IO量的问题,在一般情况下,索引扫描都是单IO单数据块(页)操作,
   而全表扫描大多是单IO多连接数据块(页)操作。
   
   
   
3. 前瞻性索引设计的核心思想是什么
   我想,索引设计的核心思想是:对表中数据的业务含义 及 数据使用的业务场景 的了解程度。
   对数据如何被使用 了解的越早、越清楚,则能在合适的时间设计出更合理的表结构与索引。
   
4. 说说您读完试读样章后的启发
   样章中,主要讲解的是SQL语句的处理,理论结合了部分案例,易于理解。

--------------------------------------------
以上仅 个人观点。

使用道具 举报

回复
论坛徽章:
38
紫蜘蛛
日期:2014-11-05 16:43:53秀才
日期:2015-06-24 11:20:12秀才
日期:2015-06-29 15:26:52秀才
日期:2015-07-02 11:39:08秀才
日期:2015-07-03 15:58:35秀才
日期:2015-07-03 15:58:35秀才
日期:2015-07-03 17:00:53知识
日期:2015-07-06 11:21:47秀才
日期:2015-07-09 10:49:16秀才
日期:2015-07-14 09:44:30
27#
发表于 2015-6-16 20:01 来自手机 | 只看该作者
请问  大师  在oracle 里面有不同的索引  在不同的情况下完成  加速
最近在使用mysql数据库  mysql 只有b树索引  我们怎么对不同情况加速呢
索引多了会降低性能   我们该怎么做呢

使用道具 举报

回复
论坛徽章:
184
2013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-06-05 15:29:212013年新春福章
日期:2013-06-05 15:29:212013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-06-05 15:29:21马上有房
日期:2014-03-03 16:14:44马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-03-04 16:55:19ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42
28#
发表于 2015-6-17 11:14 | 只看该作者
good job

使用道具 举报

回复
论坛徽章:
0
29#
发表于 2015-6-17 14:21 | 只看该作者
WOLFRAMM 发表于 2015-6-12 10:54
新一代的数据库都没的索引了。。

什么数据库没索引?

使用道具 举报

回复
论坛徽章:
176
20周年集字徽章-20	
日期:2020-10-28 14:31:21ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB社区12周年站庆徽章
日期:2013-08-13 16:52:38itpub13周年纪念徽章
日期:2014-10-08 15:21:35ITPUB14周年纪念章
日期:2015-10-26 17:23:44ITPUB15周年纪念
日期:2018-02-09 14:12:58ITPUB18周年纪念章
日期:2018-09-17 10:09:4919周年集字徽章-庆
日期:2019-08-27 15:07:44状元
日期:2015-11-19 12:58:23
30#
发表于 2015-6-17 16:35 | 只看该作者
1. 索引个数对于SQL解析性能的影响
在SQL执行之前,优化器要确定访问路径,包括:应该使用哪个索引,索引的访问方式...
索引越多,优化器“考虑”得越多,势必会影响性能。

2. 如何有效使用索引和表结构来处理SQL语句
冗余字段,往往比外键索引更高效,牺牲一点点空间,换来更好的性能。

3. 前瞻性索引设计的核心思想是什么
数据库设计要有前瞻性,有利于扩展或增加应用系统的处理功能。
索引的前瞻性,个人以为针对报表的索引,往往要多推敲。

4. 说说您读完试读样章后的启发
虽然是10年前的书,但是对原理的阐述却清晰细致。
不愧是多位大牛推荐的书,仅仅试读了“第3章 SQL处理过程”,就觉得丰富了索引设计的思路。
好书,赞一个!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表