`
sunshadow1992
  • 浏览: 16527 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

《高性能MySQL》读书笔记(三)------ 前缀索引的长度测试

 
阅读更多

前缀索引是指仅利用索引字段的前一部门建立的索引。相较而言,前缀索引可以减小索引的大小,且在索引的长度选择的比较是当地额情况下,并不会太多地降低索引的选择性。合适的前缀索引应当在选择性和索引大小之间取得平衡。在创建前缀索引之前,应当对数据的分布情况进行测试。在对字段建立前缀索引之前,先计算字段的选择性,在测试不同长度的字段的前缀索引的选择性,在选择性较理想的情况下建立索引。 

可以使用如下SQL语句去计算某个字段的选择性:

 

 select count(distinct [column]) / count(*) as lenFull from [tableName]

 使用如下SQL语句计算某长度的前缀索引的选择性:

 

select count(distinct left ([column], 4)) / count(*) as len4 , 
 count(distinct left ([column], 5)) / count(*) as len5 ,
 count(distinct left ([column], 6)) / count(*) as len6 ,
 count(distinct left ([column], 7)) / count(*) as len7 ,
 count(distinct left ([column], 8)) / count(*) as len8 from [tableName]

有表如下:

name_py name_zh
boxigua 薄西瓜
houxigua 厚冬瓜
liuyishou 刘一手
liuerniu 刘二牛
lidaniu 李大牛
lierniu 李二牛
lisanniu 李三牛
wangfeng

汪峰

wangliyan 王立言
wanglide 王立德
wangligong 王立功
wangsanli 王三立
zhangchu 张楚
zhangliming 张黎明
zhaliangyong 查良镛
zhaliangyong

查良永

wangliyan 汪力言

字段选择性测试与定长索引选择性测试结果如下:

 

 

 

另外,使用聚集函数对定长前缀的结果分组结果如下:

 

所以,选择长度8构造前缀索引比较合适。选择性较高且不会出现特定的“黑洞”(必出长度为2的时候,li和liu这俩大姓混在一起,对li的查询索引的选择性就太差)

  • 大小: 16.3 KB
  • 大小: 61.9 KB
  • 大小: 66.1 KB
分享到:
评论

相关推荐

    《高性能MySQL》读书笔记.docx

    索引可以包含一个或多个列的值,如果索引包含多个列,那么列的顺序也十分重要,因为MySQL只能高效地使用索引的最左前缀。创建一个包含两个列的索引,和创建两个包含只包含一列的索引是大不相同的。

    MySQL 高级 笔记

    ### MySQL高级笔记知识点详解 #### 一、索引优化 **1.1 索引基本概念** - **定义**:索引是帮助MySQL高效获取数据的数据结构。 - **类型**: - **唯一索引**:确保每条记录都是唯一的。 - **主键索引**:一种...

    【课堂笔记】MySQL事务与锁详解.pdf

    前缀索引的创建和使用可以在创建表时或者修改表结构时完成,比如在地址字段上建立前缀索引。但需要注意选择合适的前缀长度,以平衡索引的存储空间和搜索效率。 6. MySQL存储引擎与事务支持: 不同的MySQL存储引擎对...

    mysql源代码和相应笔记.zip

    笔记部分可能包括了对MySQL关键概念的解释、源码阅读的心得、性能调优技巧、问题排查方法等。例如: 1. 数据库设计:笔记可能会讨论如何设计高效的数据库模式,包括范式理论的应用、主键和外键的设置。 2. 索引...

    MySQL学习笔记(2)——索引

    MySQL中的索引是一种为了加速数据检索而创建的数据结构,它基于B树模型,能显著提升查询效率,尤其是在大型数据集中。索引的主要目的是减少数据库在查找特定数据时需要扫描的数据量,从而加快查询速度,同时也可支持...

    mysql面试题100题,包含答案和解析.docx

    MySQL面试题涵盖了许多核心知识点,包括索引使用、死锁处理、SQL优化、数据库引擎对比、分布式主键选择以及事务管理等。以下是对这些主题的详细解析: 1. **索引使用注意事项**: - 索引在含有`OR`、`LIKE`通配符...

    mysq数据库高级笔记

    在MySQL中,索引是数据库性能优化的关键技术之一。一个索引实际上对应于一棵B+树,这棵树中的每一个节点代表一个数据页,通常一个页会占用16KB的存储空间。因此,索引本身也会占用一定的磁盘空间。 - **B+树结构**...

    MySQL笔记(5)深入浅出索引(下)

    总的来说,理解索引的工作原理、掌握覆盖索引和最左前缀原则,是进行SQL优化和提高数据库性能的关键。通过对索引的合理设计,可以有效地减少数据检索的时间,提高应用程序的响应速度。同时,应当注意避免过度使用...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    2009达内SQL学习笔记

    当两个表有相同字段时必须加前缀,列名前需加表名和“.”,如“s_emp.id”。 1、用法:SELECT columns,prod2,prod3<列> FROM Table1,table2<表名> 分号结束 如: select id from s_emp; select last_name,name ...

Global site tag (gtag.js) - Google Analytics