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