首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

前缀目录

2013-02-19 
前缀索引SELECT count(DISTINCT(address))/count(*) AS Selectivity FROM info+-------------+| Selectiv

前缀索引
SELECT count(DISTINCT(address))/count(*) AS Selectivity FROM info; +-------------+ | Selectivity | +-------------+ | 0.8745 | +-------------+ ?


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

SELECT count(DISTINCT(left(address,5)))/count(*) AS Selectivity FROM info; +-------------+ | Selectivity | +-------------+ | 0.5981 | +-------------+ ?


?


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

SELECT count(DISTINCT(left(address,10)))/count(*) AS Selectivity FROM info; +-------------+ | Selectivity | +-------------+ | 0.8239 | +-------------+ ?

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

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

热点排行