设计索引的原则:
搜索的索引列,不一定是所要选择的列。最适合索引的列是出现在where子句中的列,或连接子句中指定的列,而不是出现在select关键字后的列表中的列。使用唯一索引.考虑到某列中的值分布,索引的列基础越大,索引的效果越好。比如存放出生日期的列具有各不相同的值,很容易区分,但是记录性别的列,只含有男和女对此类进行索引没有多大好处使用短检索。如果对字符串进行检索,应该指定一个前缀长度。例如:一个CHAR(200)列,如果前10个或20个字符内,多数值是唯一的,那么就不要对整个列进行检索。对前10个或20个字符进行检索能够节省大量索引空间,是查询更快。利用最左前缀。在创建一个n列索引时,实际是创建了MySQL可利用的n个索引。多列索引可起几个索引的作用,因为可利用索引最左边的列级来匹配。不要过度索引。每个索引都是占用额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引必须进行相应的更新,有时候需要重构。如果有一个索引很少被用到,那么会不必要的减缓表的修改速度。此外,mysql在生成一个执行计划时,要考虑各个索引,这也要花费时间。创建多余的索引给查询优化带来了更多的工作对于Innodb,记录默认会按照一定的顺序排序,如果有明确的定义主键,则按照主键排序顺序保存。新闻热点
疑难解答