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;
.