国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql前綴索引及其選擇

2024-07-24 12:59:49
字體:
來源:轉載
供稿:網友
索引的選擇性: 是指不重復的索引值(也稱基數)和數據表的記錄總數(#T)的比值,范圍從1/#T到1之間。索引的選擇性越高則查詢效率越高,因為選擇性高的索引可以讓MySQL在查找時過濾更多的行。唯一索引的選擇性是1,這是最好的索引選擇性,性能也是最好的。

為了保證前綴索引有較高的選擇性,同時又不能太長可以使用計算完整列的選擇性,并使前綴的索引性接近于完整列的選擇性,方法如下:

第一步:計算完整列的選擇性:

表名:city_demo, city是城市名稱字段

mysql>SELECT COUNT(DISTINCT `city`)/COUNT(*) FROM `city_demo`;

顯示結果:

+---------------------------------+| COUNT(DISTINCT `city`)/COUNT(*) | +-----------------+----------+-----| 0.0312|+---------------------------------+

也就是說前綴索引的選擇性能夠接近0.031,那么該長度的索引就可以用了。

第二步:計算不同前綴長度的選擇性

mysql> SELECT COUNT(DISTINCT LEFT(`city`,3))/COUNT(*) AS sel3,mysql> COUNT(DISTINCT LEFT(`city`,4))/COUNT(*) AS sel4,mysql> COUNT(DISTINCT LEFT(`city`,5))/COUNT(*) AS sel5,mysql> COUNT(DISTINCT LEFT(`city`,6))/COUNT(*) AS sel6,mysql> COUNT(DISTINCT LEFT(`city`,7))/COUNT(*) AS sel7mysql> FROM `city_demo`;

顯示結果:

+-------+-------+-------+-------+-------+| sel3 | sel4 | sel5 | sel6 | sel7 |+-------+-------+-------+-------+-------+| 0.239 |0.0293 |0.0305 |0.0309 |0.0310 |+-------+-------+-------+-------+-------+

查詢結果顯示當前綴長度達7的時候,前綴長度的選擇性接近完整列的選擇性,再增加前綴長度,選擇性提升的幅度已經很小了。

第三步:創建前綴索引

mysql> ALTER TABLE `city_demo` ADD KEY(city(7));

其他

前綴索引缺點

MySQL 無法使用前綴索引做ORDER BY 和GROUP BY,也無法使用前綴索引做覆蓋掃描

前綴索引擴展

有時候后綴索引也有用途(例如,找到某個域名的所有電子郵件地址)。MySQL原生并不支持反向索引,但是可以把字符串反轉存儲,并基于此建立前綴索引。可以通過觸發器來維護這種索引。

以上內容總結自《高性能MYSQL》5.3.2


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆丰市| 慈溪市| 汪清县| 保靖县| 文化| 郸城县| 同仁县| 高邮市| 蓬安县| 集贤县| 丰台区| 四平市| 巴东县| 承德市| 福建省| 乳山市| 柳州市| 瑞丽市| 山东省| 大兴区| 靖宇县| 澄迈县| 木里| 应城市| 定边县| 新巴尔虎右旗| 富宁县| 肇州县| 汕头市| 渝北区| 松桃| 高唐县| 绥滨县| 丹寨县| 新绛县| 黄大仙区| 莱西市| 青龙| 政和县| 金华市| 榕江县|