位置: 编程技术 - 正文

MySQL数据库优化技术之索引使用技巧总结(mysql数据库优化方案)

编辑:rootadmin

推荐整理分享MySQL数据库优化技术之索引使用技巧总结(mysql数据库优化方案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql数据库优化及sql调优,mysql数据库优化总结,mysql数据库优化面试题,mysql数据库优化及sql调优,mysql数据库优化面试题,mysql数据库优化方案,mysql数据库优化面试题,mysql数据库优化面试题,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例总结了MySQL数据库优化技术的索引用法。分享给大家供大家参考,具体如下:

这里紧接上一篇《MySQL数据库优化技术之配置技巧总结》,进一步分析索引优化的技巧:

(七)表的优化

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) < 改造成WHERE date_col < '--'

WHERE TO_DAYS(date_col) - TO_DAYS(CURDATE()) < cutoff 改造成WHERE date_col < DATE_ADD(CURDATE(), INTERVAL cutoff DAY)

4.在LIKE模式的开头不要使用通配符

MySQL数据库优化技术之索引使用技巧总结(mysql数据库优化方案)

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.尽量避免使用子查询,而改用连接的方式.例如:

可以改成:

改成:

3.插入判断重复键时,使用ON DUPLICATE KEY UPDATE :

4.避免使用游标

游标的运行效率极低,可以通过增加临时表,运用多表查询,多表更新等方式完成任务,不要使用游标.

(十一)使用Explain分析SQL语句使用索引的情况

当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联结和以什么次序联结的信息,借助于EXPLAIN,可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT,你也能知道优化器是否以一个最佳次序联结表。为了强制优化器对一个SELECT语句使用一个特定联结次序,增加一个STRAIGHT_JOIN子句。 。

EXPLAIN命令的一般语法是:EXPLAIN <SQL命令> 如:explain select * from a inner join b on a.id=b.id

EXPLAIN的分析结果参数详解:

1.table:这是表的名字。

2.type:连接操作的类型。

system:表中仅有一条记录(实际应用很少只有一条资料的表)

const:表最多有一个匹配行,用于用常数值比较PRIMARY KEY或UNIQUE索引的所有部分时,

如:

(song_id为表的primary key)

eq_ref:对于每个来自于前面的表的行组合,从该表中用UNIQUE或PRIMARY KEY的索引读取一行,

如:(b的type值为eq_ref)

ref:对于每个来自于前面的表的行组合,从该表中用非UNIQUE或PRIMARY KEY的索引读取一行

如:和(b的type值为ref,因为b.singer_name是普通索引)

ref_or_null:该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL值的行,

如:

index_merge:该联接类型表示使用了索引合并优化方法

Key: 它显示了MySQL实际使用的索引的名字。如果它为空(或NULL),则MySQL不使用索引。

key_len: 索引中被使用部分的长度,以字节计。

3.ref:ref列显示使用哪个列或常数与key一起从表中选择行

4.rows: MySQL所认为的它在找到正确的结果之前必须扫描的记录数。显然,这里最理想的数字就是1。

5.Extra:这里可能出现许多不同的选项,其中大多数将对查询产生负面影响。一般有:

using where:表示使用了where条件

using filesort: 表示使用了文件排序,也就是使用了order by子句,并且没有用到order by 里字段的索引,从而需要额外的排序开销,所以如果出现using filesort就表示排序的效率很低,需要进行优化,比如采用强制索引的方法(force index)

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL索引操作技巧汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

希望本文所述对大家MySQL数据库计有所帮助。

mysql5.7. 环境搭建教程(解压缩版) 最近决定学习数据库,在比较了各个数据库之后,选择从mysql入手,主要原因:开源成熟,通用用户量多,社区完善入门简单一、下载安装mysql的官网下

Linux环境下mysql5.7.安装教程 本文实例为大家分享了Linuxmysql5.7.安装教程,供大家参考,具体内容如下1、准备cmake-3.6.0.tar.gzbison-3.0.4.tar.gzmysql-5.7..tar.gz(

详解mysql建立索引的使用办法及优缺点分析 前言索引(index)是帮助MySQL高效获取数据的数据结构。它对于高性能非常关键,但人们通常会忘记或误解它。索引在数据越大的时候越重要。规模小、

标签: mysql数据库优化方案

本文链接地址:https://www.jiuchutong.com/biancheng/347930.html 转载请保留说明!

上一篇:MySQL数据库优化技术之配置技巧总结(mysql数据库优化总结)

下一篇:mysql5.7.13 环境搭建教程(解压缩版)(mysql8.0环境配置)

  • 固定资产出售如何申报增值税
  • 多交的增值税和附加税退回,如何记账
  • 金蝶怎么增加凭证行数
  • 发票上的不含税单价怎么算的
  • 营业执照经营范围增项如何办理
  • 网银盾属于什么费用
  • 企业所得税申报表A类
  • 以前年度损益所得怎么算
  • 软件维护费可以出维护人员工资吗?
  • 取得抵债资产的方式主要有以下几种
  • 租客一次性支付一年租金需要交个税吗
  • 机械租赁费发票图片
  • 企业以现金形式支付货款
  • 印花税的收取
  • 政府专项补助如何处理
  • 处于成熟期的企业其预算模式的特点是以什么为起点
  • 餐饮发票可以抵扣成本吗
  • 会展企业的作用有哪些
  • 库存商品转在建工程摘要怎么写
  • 未办土地有偿使用手续多少钱
  • 筹建期的工资
  • 个体户个人所得税预缴纳税申报
  • 笔记本最新windows
  • 如何看懂财务报表的书
  • 票据追索权纠纷被告
  • 公司收到项目的现金
  • 个体户个人所得税免征额是多少
  • 路由器怎么重置网络
  • 摊销无形资产会影响无形资产的账面价值吗
  • 收到现金股利会影响利润吗
  • 资产减值损失属于损益类的收入还是费用
  • php文件上传用什么请求方法
  • 企业会计核算应当以权责发生制为基础
  • vue中的icon
  • 员工报销医药费的会计分录
  • 递延所得税的会计应用
  • 融资租赁的残值归出租人所有,为啥要减去租金限值
  • 年度报表资产总额平均值怎么算
  • 货物运输业增值税
  • 汽车折旧费谁出
  • 织梦如何添加浮动广告
  • 二级栏目怎么做
  • 《开具红字增值税专用发票通知单》
  • 购货发票属于是什么凭证
  • access数据库修改字段类型
  • 小规模纳税人出售使用过固定资产
  • 可转债会计分录怎么做
  • 长期待摊费用为什么属于资产
  • 税前弥补以前年度亏损
  • 简易计税开具的发票取得的进项可以抵扣嘛
  • 公司二手车销售
  • 扶贫小额信贷分贷统还违规吗
  • 新准则印花税计提会计分录
  • 补缴以前年度企业年金可以税前扣除吗
  • 多收钱退回去咋说
  • 主营业务成本的增加在哪一方
  • 无形资产的研发支出
  • 刻章发票可以抵扣吗
  • sql server 性能调优
  • win10创意者更新易升
  • 组策略怎么用
  • xp系统好奇怪哦
  • c盘里面放什么
  • qqpcrtp.exe是什么进程 如何删除qqpcrtp进程
  • mac怎么找自己下载的应用
  • centos重启动停在4m
  • win7 如何截屏
  • win7系统更新补丁会解决游戏卡顿的问题吗
  • windows如何编辑内容
  • bat关闭bat
  • 30岁亿万富婆
  • 杀死oracle进程
  • 关于angularjs1说法,错误的是
  • unity双面材质
  • 广西税务12366怎么查询发票
  • 国税发票查询能查出什么项目
  • 个体户注销还要交税吗?
  • 济南高新发展公告
  • 考公务员国家税务局好吗
  • 电子秒表怎么读数9:33.12
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设