源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

MySQL数据库优化技术之索引使用技巧总结

  • 时间:2022-11-16 10:54 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:MySQL数据库优化技术之索引使用技巧总结
本文实例总结了MySQL数据库优化技术的索引用法。分享给大家供大家参考,具体如下: 这里紧接上一篇《[url=http://www.1sucai.cn/article/88850.htm]MySQL数据库优化技术之配置技巧总结[/url]》,进一步分析索引优化的技巧: [b](七)表的优化[/b] 1. 选择合适的数据引擎 MyISAM:适用于大量的读操作的表 InnoDB:适用于大量的写读作的表 2.选择合适的列类型 使用 SELECT * FROM TB_TEST PROCEDURE ANALYSE()可以对这个表的每一个字段进行分析,给出优化列类型建议 3.对于不保存NULL值的列使用NOT NULL,这对你想索引的列尤其重要 4.建立合适的索引 5.使用定长字段,速度比变长要快 [b](八)建立索引原则[/b] 1.合理使用索引 一个Table在一次query中只能使用一个索引,使用EXPLAIN语句来检验优化程序的操作情况 使用analyze帮助优化程序对索引的使用效果做出更准确的预测 2.索引应该创建在搜索、排序、归组等操作所涉及的数据列上 3.尽量将索引建立在重复数据少的数据列中,唯一所以最好 例如:生日列,可以建立索引,但性别列不要建立索引 4.尽量对比较短的值进行索引 降低磁盘IO操作,索引缓冲区中可以容纳更多的键值,提高命中率 如果对一个长的字符串建立索引,可以指定一个前缀长度 5.合理使用多列索引 如果多个条件经常需要组合起来查询,则要使用多列索引(因为一个表一次查询只能使用一个索引,建立多个单列索引也只能使用一个) 6.充分利用最左前缀 也就是要合理安排多列索引中各列的顺序,将最常用的排在前面 7.不要建立过多的索引 只有经常应用于where,order by,group by中的字段需要建立索引. 8.利用慢查询日志查找出慢查询(log-slow-queries, long_query_time) [b](九)充分利用索引[/b] 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' [b](十)SQL语句的优化[/b] 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 :
[url=http://www.1sucai.cn/Special/621.htm]MySQL索引操作技巧汇总[/url]》、《[url=http://www.1sucai.cn/Special/594.htm]MySQL日志操作技巧大全[/url]》、《[url=http://www.1sucai.cn/Special/441.htm]MySQL事务操作技巧汇总[/url]》、《[url=http://www.1sucai.cn/Special/563.htm]MySQL存储过程技巧大全[/url]》、《[url=http://www.1sucai.cn/Special/568.htm]MySQL数据库锁相关技巧汇总[/url]》及《[url=http://www.1sucai.cn/Special/606.htm]MySQL常用函数大汇总[/url]》 希望本文所述对大家MySQL数据库计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部