MySQL_前缀索引_建立

-- 查看出现频率
select count(*) as cnt,city
from sakila.city_demo group by city order by cnt desc limit 10;

1.select count(distinct city)/count(*) from sakila.city_demo;

*完整列的选择性

2. select count(distinct left(city,3))/count(*) as sel3 ,
count(distinct left(city,4))/count(*) as sel4 ,
count(distinct left(city,5))/count(*) as sel5 ,
count(distinct left(city,6))/count(*) as sel6 ,
count(distinct left(city,7))/count(*) as sel7

from sakila.city_demo;

*前缀输出越贴近 1 输出,性能越高

3. alter table sakilal.city_demo add key (city(7));

使用场景:

16进制唯一ID使用前缀索引。 通常使用前8位,性能显著提高

时间: 2024-10-05 20:46:49

MySQL_前缀索引_建立的相关文章

mysql索引的建立和使用

转自[http://www.cnblogs.com/mywebname/articles/555696.html] 一.索引的概念        索引就是加快检索表中数据的方法.数据库的索引类似于书籍的索引.在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息.在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库. 二.索引的特点    1.索引可以加快数据库的检索速度     2.索引降低了数据库插入.修改.删除等维护任务的速度     3.索引创建在表上,不

mysql前缀索引

应用场景: 数据库里有个地址(address)字段,类型为varchar(100),业务决定了要经常根据address来进行查询. 确定选择性: Sql代码 SELECT count(DISTINCT(address))/count(*) AS Selectivity FROM info; +-------------+ | Selectivity | +-------------+ |      0.8745 | +-------------+ <address>选择性很好,但是长度为100

0929mysql前缀索引如何找到合适的位数

前缀索引,是指对于VARCHAR/TEXT/BLOB类型的字段建立索引时一般都会选择前N个字符作为索引.索引很长的字符列,会让索引变得大且慢.索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率,但这样也会降低索引的选择性.索引的选择性是指不重复的索引值(也称为基数,cardinality)和数据表的记录总数的比值. 计算公式:SELECT COUNT(DISTINCT(a))/COUNT(*) FROM table1; SELECT COUNT(DISTINCT(LEFT((UUID

前缀索引,一种优化索引大小的解决方案

今天在读一篇关于数据库索引介绍的文章时,该文章提到了前缀索引,对于我这个搞数据库应用开发那么多年的人来说,这个词还真是一个新词,没用过.于是打算研究一番. 前缀索引似乎是MySQL中的一个概念,在SQL Server和Oracle中没提出这个概念.于是就安装了一个MySQL来做实验,搞清楚前缀索引. 前缀索引说白了就是对文本的前几个字符(具体是几个字符在建立索引时指定)建立索引,这样建立起来的索引更小,所以查询更快.有点相当于Oracle中对字段使用Left函数,建立函数索引,只不过MySQL的

MySQL索引类型&建立索引的时机&索引的不足之处

MySQL索引类型包括: 1.普通索引 这是最基本的索引,它没有任何限制.它有以下几种创建方式: ◆创建索引 CREATE INDEX indexName ON mytable(username(length)); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度:如果是BLOB和TEXT类型,必须指定 length,下同. ◆修改表结构 ALTER mytable ADD INDEX [indexName] ON (username(length)) ◆创建表的时候直接指定

手把手教你:微信棋牌源码 MySQL的前缀索引

MySQL的前缀索引 微信棋牌源码咨询Q 2171793408 官网地址:http://wowotouba.com/h5 MySQL的前缀索引指的是对指定的栏位的前面几位建立的索引. Altertable Table_Name add key(column_name(prefix_len)); 或者 Createindex index_name on Table_Name(column_name(prefix_len)); 建立前缀索引后,可以直接当做普通索引进行过滤. Select ..fro

Mysql中的联合索引、前缀索引、覆盖索引

索引 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 联合索引 又名复合索引,由两个或多个列的索引.它规定了mysql从左到右地使用索引字段,对字段的顺序有一定要求.一个查询可以只使用索引中的一部分,更准确地说是最左侧部分(最左优先).如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效. CR

sql 索引 的建立

(From:http://54laobaixing.blog.163.com/blog/static/57843681200952411133121/) 假设你想找书中的某一个句子.你可以一页一页地逐页搜索,但这会花很多时间.而通过使用索引, 你可以很快地找到你要搜索的主题.      表的索引与附在一本书后面的索引非常相似.它可以极大地提高查询的速度.对一个较大的表来说, 通过加索引,一个通常要花费几个小时来完成的查询只要几分钟就可以完成.因此没有理由对需要频繁查 询的表增加索引.   注意:

前缀索引小结

前缀索引(prefix indexes) 部分索引的原因: 1.char/varchar太长全部做索引的话,效率太差,存在浪费. 2.或者blob/text类型不能整列作为索引列,因此需要使用前缀索引. 部分索引选择建议: 1.统计平均值. 2.遵循2/8原则. 缺点: 无法利用前缀索引完成排序.