文档详情

Mysql数据库优化技术 — 索引篇.doc

发布:2017-07-31约3.54千字共3页下载文档
文本预览下载声明
Mysql数据库优化技术 — 索引篇.txt时尚,就是让年薪八千的人看上去像年薪十万。我们总是要求男人有孩子一样的眼神,父亲一样的能力。一分钟就可以遇见一个人,一小时喜欢上一个人,一天爱上一个人,但需要花尽一生的时间去忘记一个人。(七)表的优化 1. 选择合适的数据引擎 MyISAM:适用于大量的读操作的表 InnoDB:适用于大量的写读作的表 2.选择合适的列类型 使用 SELECT * FROM TB_TEST PROCEDURE ANALYSE()可以对这个表的每一个字段进行分析,给出优化列类型建议 3.对于不保存NULL值的列使用NOT NULL,这对你想索引的列尤其重要 4.建立合适的索引 5.使用定长字段,速度比变长要快 (八)建立索引原则 1.合理使用索引 一个Table在一次query中只能使用一个索引,使用EXPLAIN语句来检验优化程序的操作情况 使用analyze帮助优化程序对索引的使用效果做出更准确的预测 2.索引应该创建在搜索、排序、归组等操作所涉及的数据列上 3.尽量将索引建立在重复数据少的数据列中,唯一所以最好 例如:生日列,可以建立索引,但性别列不要建立索引 4.尽量对比较短的值进行索引 降低磁盘IO操作,索引缓冲区中可以容纳更多的键值,提高命中率 如果对一个长的字符串建立索引,可以指定一个前缀长度 5.合理使用多列索引 如果多个条件经常需要组合起来查询,则要使用多列索引(因为一个表一次查询只能使用一个索引,建立多个单列索引也只能使用一个) 6.充分利用最左前缀 也就是要合理安排多列索引中各列的顺序,将最常用的排在前面 7.不要建立过多的索引 只有经常应用于where,order by,group by中的字段需要建立索引. 8.利用慢查询日志查找出慢查询(log-slow-queries, long_query_time) (九)充分利用索引 1.尽量比较数据类型相同的数据列 2.尽可能地让索引列在比较表达式中独立, WHERE mycol 4 / 2 使用索引,而WHERE mycol * 2 4不使用 3.尽可能不对查询字段加函数, 如WHERE YEAR(date_col) 1990改造成WHERE date_col ’1990-01-01’ WHERE TO_DAYS(date_col) - TO_DAYS(CURDATE()) cutoff 改造成WHERE date_col DATE_ADD(CURDATE(), INTERVAL cutoff DAY) 4.在LIKE模式的开头不要使用通配符 5.使用straight join可以强制优化器按照FROM子句的次序来进行联结,可以select straight join,强制所有联结,也可以select * from a straight join b强制两个表的顺序. 6.使用force index强制使用指定的索引.如 select * from song_lib force index(song_name) order by song_name比不用force index效率高 7.尽量避免使用MySQL自动类型转换,否则将不能使用索引.如将int型的num_col用where num_col=‘5’ (十)SQL语句的优化 1.创建合适的统计中间结果表,降低从大表查询数据的几率 2.尽量避免使用子查询,而改用连接的方式.例如: SELECT a.id, (SELECT MAX(created) FROM posts WHERE author_id = a.id) AS latest_post FROM authors a 可以改成: SELECT a.id, MAX(p.created) AS latest_post FROM authors AS a INNER JOIN posts p ON (a.id = p.author_id) GROUP BY a.id select song_id from song_lib where singer_id in (select singer_id from singer_lib where first_char=A ) limit 2000改成: select song_id from song_lib a inner join singer_lib b on a.singer_id=b.singer_id and first_char=A limit 2000 3.插入判断重复键时,使用ON DUPLICATE KEY UPDATE : insert into db_action.action_today(user_id,song_id,action_coun
显示全部
相似文档