Posts Tagged MySQL index

MySQL的多列索引

项目最近出了点问题,数据库最先出现问题,这也是一般项目的问题,从合作方那要了数据库备份及慢查询记录,发现存在以下二个问题:
1、数据库存在太多垃圾数据,表容量过大;
2、许多查询没有对应的索引;
知道了问题所在,就开始着手优化了,针对第1点,只要及时清理垃圾数据就可以。我们的重点在第二点—-索引,这也是今天我要记录的。

什么是索引?

索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。
所有的MySQL列类型能被索引。在相关的列上的使用索引是改进SELECT操作性能的最好方法。
一个表最多可有16个索引。最大索引长度是256个字节,尽管这可以在编译MySQL时被改变。
对于CHAR和VARCHAR列,你可以索引列的前缀。这更快并且比索引整个列需要较少的磁盘空间。
Read the rest of this entry »

2 Comments