美文网首页数据库
高级5、前缀索引

高级5、前缀索引

作者: 阿休 | 来源:发表于2018-05-17 12:03 被阅读2次

应用场景:

数据库里有个地址(address)字段,类型为varchar(100),业务决定了要经常根据address来进行查询。

确定选择性:

Sql代码 

SELECT count(DISTINCT(address))/count(*) AS Selectivity FROM info;   

+-------------+    

| Selectivity |   

+-------------+    

|      0.8745 |   

+-------------+   

选择性很好,但是长度为100,对整个字段建立索引显然不合适,可以考虑建立前缀索引,例如,看看其选择性:  

Sql代码 

SELECT count(DISTINCT(left(address,5)))/count(*) AS Selectivity FROM info;   

+-------------+    

| Selectivity |   

+-------------+    

| 0.5981 |

+-------------+    

选择性还不错,但和0.8745相比还是太低,所以我们可以将前缀长度增加到10,再看看选择性:

Sql代码 

SELECT count(DISTINCT(left(address,10)))/count(*) AS Selectivity FROM info;   

+-------------+    

| Selectivity |   

+-------------+    

|      0.8239 |   

+-------------+   

和0.8745已经很接近了,但是索引长度只有10,所以就可以决定建立前缀索引了。

前缀索引兼顾索引大小和查询速度,但是其缺点是不能用于ORDER BY和GROUP BY操作,也不能用于Covering index(即当索引本身包含查询所需全部数据时,不再访问数据文件本身)。

相关文章

  • 高级5、前缀索引

    应用场景: 数据库里有个地址(address)字段,类型为varchar(100),业务决定了要经常根据addre...

  • MySQL索引机制(详细+原理+解析)

    一.索引的类型与常见的操作 前缀索引 MySQL 前缀索引能有效减小索引文件的大小,提高索引的速度。但是前缀索引也...

  • 5.3高性能的索引策略《创建高性能的索引》(3.4.5未完待续)

    先概括一下索引的策略: 1)单列索引 2)前缀索引 3)多列索引 4)选择合适索引顺序 5)聚簇索引 6)覆盖索引...

  • 前缀索引,中看也中用!

    @[toc]最近几篇文章,都是在和大家聊索引的问题,今天我们来看看前缀索引。 1.什么是前缀索引 所谓前缀索引说白...

  • MySQL实战 | 11 怎么给字符串字段加索引?

    两种: 全字段索引 前缀索引 举例: 可以对 email 字段创建全字段索引,或者前缀索引。 区别 1、全字段索引...

  • day06

    6.7 索引的操作管理 1.添加索引 2.查看索引 3.创建唯一索引 4.创建前缀索引 5.创建联合索引 6.删除...

  • mysql笔记

    前缀索引:使用字段的部分前缀做为索引,可以有效减少索引的长度 1)、创建索引 alter table testdb...

  • Mysql

    索引(一般监控到慢SQL,才会建索引) 前缀索引 常见索引误区 多列联合索引 左前缀例子(是一种联合索引的匹配规则...

  • Mysql前缀索引长度确定方法

    MySQL 前缀索引能有效减小索引文件的大小,提高索引的速度。但是前缀索引也有它的坏处:MySQL 不能在 ORD...

  • 高性能的索引策略【高性能mysql第三版笔记】

    1. where右边使用独立的列 2. 前缀索引和索引选择性 前缀索引:索引最开始的部分字符,可以大大节约索引空间...

网友评论

    本文标题:高级5、前缀索引

    本文链接:https://www.haomeiwen.com/subject/qtlbdftx.html