編碼的世界 / 優質文選 / 歷史

mysql對於很長的字符列的索引方案


2022年7月20日
-   

1.模擬哈希索引
   新建一列用於存儲該字符列的hash值(哈希函數不要使用SHA1(),MD5(),因為會產生很長的字符串,浪費空間,比較也慢,最好是返回整數的hash函數),在該列建立索引,查詢時必須在where子句中包含常量值,以避免hash沖突(
      例如:SELECT  id
                FROM urlT
                WHERE url_hash = hash('www.blog.csdn.net')
                AND url = 'www.blog.csdn.net')。
2.使用前綴索引
    要考慮選擇足夠長的前綴以保證較高的選擇性,同時又不能太長(以便節約空間),最後還要考慮數據分布。
   創建語句  ALTER TABLE cityT ADD KEY (city(7));
    計算完整列的選擇性:SELECT COUNT(DISTINCT cityname)/COUNT(*)  FROM cityT;
     計算不同前綴長度的選擇性:SELECT COUNT(DISTINCT LEFT(cityname,3))/COUNT(*)  FROM cityT;
                                                 SELECT COUNT(DISTINCT LEFT(cityname,4))/COUNT(*)  FROM cityT;
                                                 .

熱門文章