MySQL索引
MySQL查询优化最重要的当属建立正确的索引,没有索引,面对海量数据,一切的优化纯属空话。什么是索引?索引为什么那么重要呢?这些问题这里就不谈了,还是先写下我首次优化MySQL查询海量数据的心得吧,数据库表类型是MyISAM。
如果简单的一个查询语句,MySQL查询速度还是比较客观的,例如select col_name from table [where conditions]即使数据量再大,也是非常之快。但是我们平时具体使用往往需要几张表的连接才能得到数据,甚至是进行order by、group by,这个时候如果没有索引,就显得异常的慢。表的连接、order by、group by往往还要加上条件,因此创建复合索引的情况比较多见。
复合索引有一个重要的原则是匹配最左前缀,一般如果匹配了最左前缀,就不需要再单独建立一个单一索引了,索引过多只会减慢查询速度。例如建立了create index ComplexIndex on table(Owner,Type,Permission)就相当于包含了(Owner,Type)和(Owner)这两个索引。先写这些吧,待续。