巴彦淖尔| 石龙| 靖宇| 彭山| 桃源| 平陆| 乐至| 巴中| 大渡口| 达尔罕茂明安联合旗| 邯郸| 上海| 宜川| 聊城| 德清| 南木林| 武清| 房山| 渑池| 水富| 桑植| 珊瑚岛| 福州| 西乡| 商水| 白城| 淮阳| 玛多| 永登| 建湖| 龙江| 东明| 呼玛| 猇亭| 户县| 南充| 汶上| 武强| 沭阳| 张家口| 天全| 兰州| 方正| 塘沽| 稷山| 陆丰| 乳山| 伊金霍洛旗| 鄂温克族自治旗| 泽州| 磴口| 盂县| 丘北| 鄂温克族自治旗| 凤凰| 荆州| 牡丹江| 歙县| 西平| 黄梅| 石景山| 永州| 庆元| 泰州| 久治| 乌兰察布| 双鸭山| 麻山| 清远| 松原| 曲松| 明溪| 布尔津| 将乐| 天津| 甘肃| 上饶县| 罗城| 祁东| 镇江| 兴化| 吴中| 隆子| 甘孜| 新丰| 莱西| 巫溪| 马关| 大名| 贡觉| 汉川| 华宁| 大方| 巴林右旗| 朗县| 友谊| 天津| 宝安| 当涂| 赤水| 岢岚| 和布克塞尔| 江城| 庄河| 五莲| 九寨沟| 项城| 阜新市| 南华| 平昌| 平江| 四平| 达县| 东方| 乌拉特后旗| 通海| 肃北| 兖州| 东至| 桓仁| 贾汪| 呼伦贝尔| 务川| 荥经| 辽宁| 璧山| 墨江| 乌恰| 杨凌| 永靖| 长沙| 北京| 易门| 本溪市| 都匀| 畹町| 贾汪| 平利| 相城| 徐闻| 宜秀| 亚东| 歙县| 隆化| 察哈尔右翼后旗| 武鸣| 呈贡| 乌拉特前旗| 宕昌| 佛山| 崇左| 泸州| 怀来| 长白山| 坊子| 铁山港| 沛县| 新乐| 北戴河| 滦县| 平舆| 松原| 思南| 兰西| 呈贡| 舞阳| 嘉禾| 汝州| 绛县| 宁德| 铁岭县| 会泽| 承德县| 容城| 合水| 襄汾| 凌海| 五华| 东海| 行唐| 惠民| 浦东新区| 江城| 丰城| 涿州| 岳普湖| 阿拉善右旗| 万荣| 赣州| 长宁| 耒阳| 克拉玛依| 涪陵| 梅里斯| 泰来| 聂荣| 高青| 全椒| 昭通| 万山| 班戈| 定兴| 密云| 林芝镇| 仁布| 满洲里| 临安| 宣汉| 科尔沁左翼后旗| 淄川| 泾县| 临湘| 罗源| 玛纳斯| 大同区| 商河| 嘉荫| 岫岩| 呼图壁| 永仁| 布拖| 富裕| 绍兴市| 澳门| 东海| 儋州| 新都| 洛扎| 鞍山| 五台| 广元| 陆丰| 玛多| 舒兰| 孟州| 剑河| 大理| 新和| 靖江| 北仑| 江油| 政和| 定边| 大石桥| 碌曲| 荔浦| 昌乐| 安国| 青岛| 古蔺| 普陀| 中宁| 汉南| 吉县| 耿马| 垦利| 浚县| 沧县| 阎良| 苗栗| 宝兴| 宁南| 道县| 西盟|

福利彩票时时彩大小号技巧:

2018-11-14 21:30 来源:北京热线010

  福利彩票时时彩大小号技巧:

  ”现场视频显示,一位年轻的公交司机在乘客陆续上车的过程中,一边询问乘客是否携带了雨伞,一边将一次性雨衣分发到乘客的手中,乘客纷纷道谢。  羊城晚报记者了解到,照明中心2012年成立后,就接手对珠江两岸的夜景照明进行维护管理,由于当时的夜景设备多为机电产品,光衰严重、灯具老化,能耗大大升高。

三是按征收对象性质设置税收征收局与非税征收局(名称待定)。据农业农村部定点监测,生猪和能繁母猪存栏环比分别减少%和%,同比分别减少%和5%;全国规模以上生猪定点屠宰企业屠宰量环比下降%,同比上涨%。

  中国与中东产油国间经济互补性强,INE原油期货筹备期间,各方不断加强经贸与金融互动。  除了这个矛盾以外,相对论和量子力学对描述时间的方式也不相同。

  INE与WTI、Brent可有效开展跨市场套利,石油美元与石油人民币之间也可以进行汇率互动和投资组合。  当晚,郁可唯以一身清凉裙装亮相,纤细的大长腿格外抢镜。

而上周险遭淘汰的张韶涵也奋起直追,以一首《再见青春》与过去的自己对话,为了备战此次的歌曲,她特意致电歌曲原唱兼原作者汪峰“取经”。

  “我们集体签约了一个俱乐部,但组队后俱乐部实际上并没有给我们提供更多的帮助,只是在上海提供了住所和很少的生活费用,我们的开销更多是靠自己线上的比赛收入,比如去年去欧洲参赛就是我们自费。

  因此从第二部分的伏魔部入题似能更好地吸引观众,为整体计划打下良好的基础。对此,《证券日报》记者分别采访苏宁金融研究院宏观经济研究中心中心主任黄志龙和易龙智投首席分析师刘思源,针对美联储加息对国内股市、楼市所带来的影响予以分析。

  分榜方面,“人民日报”“时尚COSMO(时尚伊人)”“央视新闻”“人民网”“新浪娱乐”继续问鼎本期报纸、杂志、广电、新闻网站及商业资讯类网站类分榜冠军。

    在智能制造这个话题上,虽然谈到一些,但是不够深入。中国工厂主要是出口到美国跟中国的消费者。

  为了顺利推进征管工作,各地还十分注重加强政策解读,开展培训辅导。

  原标题:中国家电企业智慧战略开始落地  广州日报讯(全媒体记者张露)3月8日~11日,2018中国家电及消费电子博览会(简称AWE)在上海召开。

  这几年,队伍不断壮大,已经有800多人。  同时,还存在同一位用户在不同网站之间数据被共享这一问题,许多用户遇到过在一个网站搜索或浏览的内容立刻被另一网站进行广告推荐的情况。

  

  福利彩票时时彩大小号技巧:

 
责编:
开发/数据库

  |  手机版

收藏网站

投稿QQ:1745232315

IT专家网,汇聚专业声音 解析IT潮流 IT专家网,汇聚专业声音 解析IT潮流

网络

专家视点在现场环球瞭望
IT专家网 > 开发/数据库

数据库必备神器——索引是什么?

作者:51CTO出处:论坛2018-11-14 18:05
记者从会上获悉,在“一带一路”倡议下,东旭光电将与多国政府及企业携手,就石墨烯智能电采暖、石墨烯大功率LED智能照明和新能源汽车推广应用,以及智慧城市物联网产业等领域展开合作,构建集智慧能源、智慧城管、智慧安防、智慧通讯、智慧出行等于一体的物联网智慧城市管理平台。

今天为大家带来关于索引的相关知识,希望对大家有所帮助。

在之前,我对索引有以下的认知:

  •  索引可以加快数据库的检索速度;
  •  表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改等维护任务的速度;
  •  索引需要占物理和数据空间;
  •  了解过索引的最左匹配原则;
  •  知道索引的分类:聚集索引和非聚集索引;
  •  Mysql支持Hash索引和B+树索引两种;

看起来好像啥都知道,但面试让你说的时候可能就GG了:

  •  使用索引为什么可以加快数据库的检索速度啊?
  •  为什么说索引会降低插入、删除、修改等维护任务的速度;
  •  索引的最左匹配原则指的是什么?
  •  Hash索引和B+树索引有什么区别?主流的使用哪一个比较多?InnoDB存储都支持吗?
  •  聚集索引和非聚集索引有什么区别?
  •  .......

1、聊聊索引的基础知识

首先Mysql的基本存储结构是页(记录都存在页里边):

  •  各个数据页可以组成一个双向链表;
  •  而每个数据页中的记录又可以组成一个单向链表;
  •  每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录;
  •  以其他列(非主键)作为搜索条件:只能从最小记录开始依次遍历单链表中的每条记录。

所以说,如果我们写select * from user where username = 'Java3y'这样没有进行任何优化的sql语句,默认会这样做:

  •  定位到记录所在的页
  •  需要遍历双向链表,找到所在的页
  •  从所在的页内中查找相应的记录
  •  由于不是根据主键查询,只能遍历所在页的单链表了

很明显,在数据量很大的情况下这样查找会很慢!

2、索引提高检索速度

索引做了些什么可以让我们查询加快速度呢?

其实就是将无序的数据变成有序(相对):

要找到id为8的记录简要步骤:

很明显的是:没有用索引我们是需要遍历双向链表来定位对应的页,现在通过"目录"就可以很快地定位到对应的页上了!

其实底层结构就是B+树,B+树作为树的一种实现,能够让我们很快地查找出对应的记录。

3、索引降低增删改的速度

如果一棵普通的树在极端的情况下,是能退化成链表的(树的优点就不复存在了)

B+树是平衡树的一种,是不会退化成链表的,树的高度都是相对比较低的(基本符合矮矮胖胖(均衡)的结构)【这样一来我们检索的时间复杂度就是O(logn)】!从上一节的图我们也可以看见,建立索引实际上就是建立一颗B+树。

  •  B+树是一颗平衡树,如果我们对这颗树增删改的话,那肯定会破坏它的原有结构;
  •  要维持平衡树,就必须做额外的工作。正因为这些额外的工作开销,导致索引会降低增删改的速度;

4、哈希索引

除了B+树之外,还有一种常见的是哈希索引。

哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快。

  •  本质上就是把键值换算成新的哈希值,根据这个哈希值来定位。

看起来哈希索引很牛逼啊,但其实哈希索引有好几个局限(根据他本质的原理可得):

  •  哈希索引也没办法利用索引完成排序;
  •  不支持最左匹配原则;
  •  在有大量重复键值情况下,哈希索引的效率也是极低的---->哈希碰撞问题;
  •  不支持范围查询;

5、InnoDB支持哈希索引吗?

主流的还是使用B+树索引比较多,对于哈希索引,InnoDB是自适应哈希索引的(hash索引的创建由InnoDB存储引擎引擎自动优化创建,我们干预不了)!

6、聚集和非聚集索引

简单概括:

  •  聚集索引就是以主键创建的索引;
  •  非聚集索引就是以非主键创建的索引;

区别:

  •  聚集索引在叶子节点存储的是表中的数据;
  •  非聚集索引在叶子节点存储的是主键和索引列;
  •  使用非聚集索引查询出数据时,拿到叶子上的主键再去查到想要查找的数据。(拿到主键再查找这个过程叫做回表)

非聚集索引也叫做二级索引,不用纠结那么多名词,将其等价就行了~

非聚集索引在建立的时候也未必是单列的,可以多个列来创建索引。

  •  此时就涉及到了哪个列会走索引,哪个列不走索引的问题了(最左匹配原则-->后面有说)
  •  创建多个单列(非聚集)索引的时候,会生成多个索引树(所以过多创建索引会占用磁盘空间)

在创建多列索引中也涉及到了一种特殊的索引-->覆盖索引

  •  我们前面知道了,如果不是聚集索引,叶子节点存储的是主键+列值
  •  最终还是要“回表”,也就是要通过主键再查找一次。这样就会比较慢
  •  覆盖索引就是把要查询出的列和索引是对应的,不做回表操作!

比如说:

  •  现在我创建了索引(username,age),在查询数据的时候:select username , age from user where username = 'Java3y' and age = 20。
  • 很明显地知道,我们上边的查询是走索引的,并且,要查询出的列在叶子节点都存在!所以,就不用回表了~

  •  所以,能使用覆盖索引就尽量使用吧~

7、索引最左匹配原则

最左匹配原则:

  •  索引可以简单如一个列(a),也可以复杂如多个列(a, b, c, d),即联合索引。
  •  如果是联合索引,那么key也由多个列组成,同时,索引只能用于查找key是否存在(相等),遇到范围查询(>、<、between、like左匹配)等就不能进一步匹配了,后续退化为线性查找。
  •  因此,列的排列顺序决定了可命中索引的列数。

例子:

  •  如有索引(a, b, c, d),查询条件a = 1 and b = 2 and c > 3 and d = 4,则会在每个节点依次命中a、b、c,无法命中d。(很简单:索引命中只能是相等的情况,不能是范围匹配)

8、=、in自动优化顺序

不需要考虑=、in等的顺序,mysql会自动优化这些条件的顺序,以匹配尽可能多的索引列。

例子:

  •  如有索引(a, b, c, d),查询条件c > 3 and b = 2 and a = 1 and d < 4与a = 1 and c > 3 and b = 2 and d < 4等顺序都是可以的,MySQL会自动优化为a = 1 and b = 2 and c > 3 and d < 4,依次命中a、b、c。

9、索引总结

索引在数据库中是一个非常重要的知识点!上面谈的其实就是索引最基本的东西,要创建出好的索引要顾及到很多的方面:

  1,最左前缀匹配原则。这是非常重要、非常重要、非常重要(重要的事情说三遍)的原则,MySQL会一直向右匹配直到遇到范围查询(>,<,BETWEEN,LIKE)就停止匹配。

  3,尽量选择区分度高的列作为索引,区分度的公式是 COUNT(DISTINCT col) / COUNT(*)。表示字段不重复的比率,比率越大我们扫描的记录数就越少。

  4,索引列不能参与计算,尽量保持列“干净”。比如,FROM_UNIXTIME(create_time) = '2018-11-14' 就不能使用索引,原因很简单,B+树中存储的都是数据表中的字段值,但是进行检索时,需要把所有元素都应用函数才能比较,显然这样的代价太大。所以语句要写成 : create_time = UNIX_TIMESTAMP('2018-11-14')。

  5,尽可能的扩展索引,不要新建立索引。比如表中已经有了a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。

  6,单个多列组合索引和多个单列索引的检索查询效果不同,因为在执行SQL时,MySQL只能使用一个索引,会从多个单列索引中选择一个限制最为严格的索引。

相关文章

关键词:数据库,索引,Mysql

责任编辑:林音子

网警备案
吉布胡郎图苏木 炮梁乡 城子街镇 通州凤港基地 环铁居委会
玉华市场 留守处 阿拉腾朝克苏木 轻工路街道 邓家老院子