岳阳县| 祥云| 沅江| 东丽| 方城| 富宁| 湟中| 伊宁市| 阳原| 永泰| 彰化| 定兴| 富川| 乌马河| 拉孜| 新荣| 绥阳| 濉溪| 荔波| 青铜峡| 青田| 南安| 从江| 安义| 易门| 南乐| 万安| 梅里斯| 海宁| 宁强| 六安| 诸城| 阳信| 卓尼| 攀枝花| 临武| 杭锦后旗| 永吉| 慈利| 马山| 和龙| 嵩明| 岳阳县| 澳门| 建瓯| 鼎湖| 梁平| 福安| 舟曲| 铁岭市| 谢通门| 中卫| 津南| 二连浩特| 昭平| 河池| 青龙| 黄埔| 北票| 大足| 格尔木| 荥经| 枣强| 台北县| 南涧| 安龙| 广灵| 临夏县| 新沂| 遂平| 大洼| 景泰| 广西| 乌兰浩特| 黄梅| 孝感| 南平| 金山屯| 洛宁| 怀化| 贵阳| 斗门| 贞丰| 吉林| 盐源| 黔西| 罗甸| 舒兰| 正安| 白玉| 茌平| 南充| 巩义| 鄯善| 白碱滩| 政和| 本溪市| 河曲| 昌乐| 永善| 宁陕| 米林| 平遥| 炎陵| 云县| 淮安| 宣恩| 庆安| 丰南| 沭阳| 高青| 宝应| 吴江| 保亭| 麦积| 讷河| 望城| 平塘| 蒲县| 峨眉山| 滦南| 乐东| 泰兴| 兴化| 葫芦岛| 象州| 望城| 徽县| 宁城| 旌德| 凌源| 张家界| 马山| 台北市| 达坂城| 梁子湖| 饶河| 保德| 井冈山| 范县| 华县| 科尔沁右翼中旗| 苍南| 鸡东| 龙口| 庄河| 大石桥| 西昌| 昭苏| 称多| 陈仓| 常州| 忠县| 宿松| 固阳| 吴中| 贵港| 岚山| 宁城| 瑞金| 沛县| 界首| 丰镇| 西丰| 平罗| 云县| 馆陶| 宣汉| 永济| 奉节| 巴东| 蛟河| 安达| 中方| 北辰| 来安| 吐鲁番| 旅顺口| 景泰| 高雄市| 上高| 弥勒| 百色| 蓬溪| 崇左| 吴川| 宿迁| 绥芬河| 贵德| 肥城| 盐都| 钦州| 澳门| 平罗| 张北| 丰宁| 九江县| 辉县| 德惠| 保亭| 石拐| 肃南| 兴义| 弓长岭| 湘潭县| 黎城| 淮北| 九江县| 甘肃| 永济| 建昌| 新余| 贡山| 灵丘| 沁县| 饶河| 内蒙古| 庆安| 呼伦贝尔| 南康| 达日| 临县| 高阳| 阆中| 盘锦| 波密| 夏邑| 宁阳| 合肥| 武胜| 南海| 洛川| 曲阳| 宁海| 娄底| 吉木萨尔| 原平| 天池| 虎林| 桃园| 柘城| 汉寿| 龙游| 浦北| 岚山| 贡山| 裕民| 泸县| 阿荣旗| 瓮安| 肇州| 东山| 丰润| 和政| 五营| 辽阳县| 灵石| 永胜| 和龙| 乌拉特前旗| 武汉| 肃宁| 资兴| 云集镇|

体育彩票17122624期:

2018-11-19 09:42 来源:中原网

  体育彩票17122624期:

  去年9月开始,多地监管部门下发文件,要求银行业金融机构强化对个人综合消费贷款、信用卡透支等业务的额度和资金流向管理,严防资金违规进入房地产领域。在房间内,民警当场查获火车票417张(后经相关部门鉴定,417张火车票全部都是假火车票),票面价值元。

金活医药财报显示,截至2017年6月底的半年总销售额中,念慈菴川贝枇杷膏占了%。房产中介:不会影响我们的业务商业银行按揭贷款的收紧态势已持续一年有余,尤其在春节后,银行额度增加、放款速度加快,各银行对贷款人的资质要求也不断提高。

  只有金融市场上长期资本充盈,重大的股市改革才会产生必要性和迫切性,才有可能顺利推进。在评选上,第四批示范项目评审条件更为严格,多位评审专家向《中国经济周刊》表示,示范项目是优中选优、宁缺毋滥,目的是打造样本、树立标杆,形成可复制、可推广的经验模式。

  同时,对方与齐某沟通基本都是用虚拟号段电话,团伙窝点究竟藏匿在何处仍未可知。在美国,通过基因检测和预防性手术,家族性结直肠癌发病率下降了90%,死亡率下降了70%,女性乳腺癌发病率下降了70%,其他重大疾病发生率也显著下降。

因而,要终结课外培训依赖症,必须是市场治理、教育改革与社会观念优化的协同推进。

  可以相信,只要发审委坚持从严把关,IPO堰塞湖就会彻底消除,企业上市之旅就会更加通畅。

  1月7日,湖北宣恩,身着红马甲的共产党员服务队穿行在沙道沟镇二坪村被冰雪覆盖的大山中,往供电抢修点运送物资。史青伟分析认为:一方面,IFO会造成社区很大的分裂;另一方面,发行IFO的人基本上都是一些投资者,很少有真正踏踏实实做IFO项目的人,因为没有很强的执行力和价值观,IFO项目很难做出来。

  更重要的一点是:证监会需要系统梳理所有已经存在的法律法规和交易制度,看清整体系统缺陷,找出问题症结,并对未来的改革事项做出次序和时机的安排,搞清楚怎样的条件下可以推进这样的改革事项。

  因为,相比追随所谓风口,我更愿意相信常识。著名经济学家宋清辉表示,由于监管政策的缺失,用户参与的门槛极低,IFO本身就可能涉嫌非法发售代币票券、非法发行证券以及非法集资、金融诈骗等,通过IFO诞生的众多新的虚拟货币几乎没有太大的价值,这里面可能存在忽悠与欺诈,投资者需要引起足够重视。

  目前,通过基因测试可实现早发现和预防性手术,降低癌症发病率,提高癌症患者生存率。

  据记者了解,深圳延保系公司通过与保险公司和保险中介机构合作的方式,以延保系公司为投保人、购买且激活比比卡、救援卡、福利卡等卡单的客户为被保险人,向保险公司投保意外伤害保险、重疾险、委托管理型产品等。

  所以说,学生联合举报提前开学,是举报,也是一种提醒。所谓B2B2C的模式,第一个B是指京东金融自己,第二个B目前主要是指金融机构,最后的C指的是用户。

  

  体育彩票17122624期:

 
责编:
开发/数据库

  |  手机版

收藏网站

投稿QQ:1745232315

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

网络

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

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

作者:51CTO出处:论坛2018-11-19 18:05
北京市美丹食品有限公司官网显示,该公司成立于2000年,是集产品设计、开发、生产、销售于一体的大型食品生产企业,主要生产美丹牌系列饼干以及蛋糕、派、蛋卷、膨化食品、曲奇、薯片、饮料、面条等其他产品,产品销往全国各地,并出口美洲、欧洲、中东、非洲等30多个国家,曾是中国食品工业协会评出的全国食品工业优秀龙头食品企业,2010年美丹品牌还被评为北京市著名商标。

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

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

  •  索引可以加快数据库的检索速度;
  •  表经常进行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-19' 就不能使用索引,原因很简单,B+树中存储的都是数据表中的字段值,但是进行检索时,需要把所有元素都应用函数才能比较,显然这样的代价太大。所以语句要写成 : create_time = UNIX_TIMESTAMP('2018-11-19')。

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

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

相关文章

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

责任编辑:林音子

网警备案
白关镇 介休县 安场 清源啤酒厂 恩察镇
五家沟 湖塔 徐戎三村 卡热乡 中南修理厂