


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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-01WHERE 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_postFROM authors a可以改成:SELECT a.id, MAX(p.created) AS latest_postFROM authors AS aINNER JOIN posts p ON (a.id = p.author_id)GROUP BY a.idselect song_id from song_lib where singer_id in(select singer_id from singer_libwhere 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 20003.插入判断重复键时,使用ON DUPLICATE KEY UPDATE :insert into db_action.action_today(user_id,song_id,action_count) values(1,1,1) ON DUPLICATE KEY UPDATE action_count=action_count+1;4.避免使用游标游标的运行效率极低,可以通过增加临时表,运用多表查询,多表更新等方式完成任务,不要使用游标.(十一)使用Explain分析SQL语句使用索引的情况当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联结和以什么次序联结的信息,借助于EXPLAIN,可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT,你也能知道优化器是否以一个最佳次序联结表。为了强制优化器对一个SELECT语句使用一个特定联结次序,增加一个STRAIGHT_JOIN子句。 。 EXPLAIN命令的一般语法是:EXPLAIN 如:explain select * from a inner join b on a.id=b.idEXPLAIN的分析结果参数详解:1.table:这是表的名字。 2.type:连接操作的类型。system:表中仅有一条记录(实际应用很少只有一条资料的表)const:表最多有一个匹配行,用于用常数值比较PRIMARY KEY或UNIQUE索引的所有部分时,如:select * from song_lib where song_id=2(song_id为表的primary key)eq_ref:对于每个来自于前面的表的行组合,从该表中用UNIQUE或PRIMARY KEY的索引读取一行,如:select * from song_lib a inner join singer_lib b on a.singer_id=b.singer_id(b的type值为eq_ref)ref:对于每个来自于前面的表的行组合,从该表中用非UNIQUE或PRIMARY KEY的索引读取一行如:select * from song_lib a inner join singer_lib b on a.singer_name=b.singer_name和select * from singer_lib b where singer_name=ccc (b的type值为ref,因为b.singer_name是普通索引)ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL值的行,如:select * from singer_lib where singer_name=ccc or singer_name is nullindex_merge:该联接类型表示使用了索引合并优化方法Key: 它显示了MySQL实际使用的索引的名字。如果它为空(或NULL),则MySQL不使用索引。 key_len: 索引中被使用部分的长度,以字节计。3.ref:ref列显示使用哪个列或常数与key一起从表中选择行 4.rows: MySQL所认为的它在找到正确的结果之前必须扫描的记录数。显然,这里最理想的数字就是1。 5.Extra:这里可能出现许多不同的选项,其中大多数将对查询产生负
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 固控设备使用课件
- 2025年汽车行业智能驾驶系统应用前景报告
- 2025年激光双束光纤行业研究报告及未来发展趋势预测
- 2025年社区经济行业社区经济发展前景展望报告
- 2025年计算机行业量子计算技术应用与发展前景研究报告
- 商场卫生安全培训课件
- 2025年绿色建筑行业绿色建筑材料市场前景研究报告
- 左权县2025山西晋中左权县事业单位招聘22人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025中国人民大学信息资源管理学院招聘1人笔试历年参考题库附带答案详解
- 哈尔滨市2025黑龙江哈尔滨工程大学机关直属单位专业技术岗位招聘1人笔试历年参考题库附带答案详解
- 2025年哈尔滨投资集团有限责任公司校园招聘笔试备考题库含答案详解(精练)
- DB4406∕T 47-2024 养老机构安全风险管理规范
- 城乡垃圾压缩站建设施工组织设计方案
- 安徽省合肥市六校联考2025-2026年高三上学期开学考试语文试卷(含答案)
- 2025年北京市中考英语真题卷含答案解析
- (2025年标准)课时合同转让协议书
- 风力发电机自动消防系统
- 公益性岗位业务培训课件
- 屋顶分布式光伏发电项目施工组织设计
- 学校安保培训课件
- 2025年湖北武汉理工大学管理人员招聘笔试模拟试题及参考答案详解
评论
0/150
提交评论