问题:
在MySQL中,前缀长度最大值为255字节。对于存储引擎为MyISAM或InnoDB的数据表,前缀最长为1000字节。
在MySQL中,对于TEXT和BLOB这种大数据类型的字段,必须给出前缀长度(length)才能成功创建索引。
办法:
可以通过计算选择性来确定前缀索引的选择性,计算方法如下
全列选择性:SELECT COUNT(DISTINCT column_name) / COUNT(*) FROM table_name;
某一长度前缀的选择性SELECT COUNT(DISTINCT LEFT(column_name, prefix_length)) / COUNT(*) FROM table_name;
当前缀的选择性越接近全列选择性的时候,索引效果越好,
也就是说,如果一个长文本,前n位大概就可以区分出不同,那就直接截取prefix_length长度的就可以,太长的索引不好维护。