mysql前缀索引
来源:互联网 发布:淘宝可以批发女装吗 编辑:程序博客网 时间:2024/06/02 23:15
mysql前缀索引
建立前缀索引的例子:
# 语法ALTER TABLE table_name ADD KEY(column_name(prefix_length)); # 示例ALTER TABLE city ADD KEY(cityname(7));
应用场景:
数据库里有个地址(address)字段,类型为varchar(100),业务决定了要经常根据
address来进行查询。 www.2cto.com
address来进行查询。 www.2cto.com
确定选择性:
Sql代码
SELECT count(DISTINCT(address))/count(*) AS Selectivity FROM info;
+-------------+
| Selectivity |
+-------------+
| 0.8745 |
+-------------+
<address>选择性很好,但是长度为100,对整个字段建立索引显然不合适,可以考虑建立
前缀索引,例如<left(address,5)>,看看其选择性: www.2cto.com
前缀索引,例如<left(address,5)>,看看其选择性: www.2cto.com
Sql代码
SELECT count(DISTINCT(left(address,5)))/count(*) AS Selectivity FROM info;
+-------------+
| Selectivity |
+-------------+
| 0.5981 |
+-------------+
选择性还不错,但和0.8745相比还是太低,所以我们可以将前缀长度增加到10,再看看
选择性: www.2cto.com
选择性: www.2cto.com
Sql代码
SELECT count(DISTINCT(left(address,10)))/count(*) AS Selectivity FROM info;
+-------------+
| Selectivity |
+-------------+
| 0.8239 |
+-------------+
和0.8745已经很接近了,但是索引长度只有10,所以就可以决定建立前缀索引了。
前缀索引兼顾索引大小和查询速度,但是其缺点是不能用于ORDER BY和GROUP BY
操作,也不能用于Covering index(即当索引本身包含查询所需全部数据时,不再访问
数据文件本身)。
操作,也不能用于Covering index(即当索引本身包含查询所需全部数据时,不再访问
数据文件本身)。
0 0
- mysql 前缀索引
- 认识mysql前缀索引
- MySQL 前缀索引
- Mysql前缀索引
- mysql前缀索引
- mysql前缀索引
- MYSQL前缀索引
- mysql前缀索引
- Mysql前缀索引
- mysql前缀索引及其选择
- MySQL前缀索引长度方法
- MySQL前缀索引和索引选择性
- mysql前缀索引的索引选择性
- MySQL前缀索引和索引选择性
- MySQL索引之前缀索引和索引选择性
- MySQL索引之前缀索引和索引选择性
- Mysql中的联合索引、前缀索引、覆盖索引
- MySQL索引之前缀索引和索引选择性
- Java编译原理
- [Java Core]Java字符串的代码点和代码单元
- unix/linux编程实践教程------学习笔记(第二章)
- 【SDUTOJ 3309】 乱七八糟的图 (最短路+枚举最短路上的边)
- 给多行公式上色
- mysql前缀索引
- 在Android上实现Java和Js交互
- android自定义桌面挂件widget用法(二)
- socket通信之七:Overlapped I/O 完成例程模型实现的客户/服务器模型
- JAVAEE struts2的简单文件上传与下载
- CSS布局:上中下三栏自适应高度
- Selenium结合TestNG自动化框架的设计与实施
- Java操作MongoDB
- sql server 2012 报表开发(2) reporting service 中制作分组折叠式报表