SQL索引与优化
MySQL高级教程,sql优化与索引。
人保雷佳音
91后,硕士研究生,阿里云云计算高级架构师。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【SQL高级优化】——第十二章MySQL中的索引优化
MySQL进行优化的注意事项如下: 1、使用短索引 2、如果where子句中已经使用了索引,order by中的列是不会使用索引的。 3、不鼓励使用like操作,如必须使用建议使用like 'aaa%' 4、不要在列上进行运算 5、范围列可以使用索引 6、类型转换会导致索引无效 7、建议一个表的索引数最好不要超过6个。其他优化策略: 1、NULL值 老版本中NULL无法触发索引,但在5.7以后可以触发了 2、避免全面...原创 2020-07-23 16:05:47 · 272 阅读 · 0 评论 -
【SQL高级优化】——第十一章全文索引-英文下三种查询方式
FULLTEXT索引在MySQL5.6之前仅可用于MyISAM表,5.7后InnoDB也支持。它们可以从CHAR、VARCHAR或TEXT列中被创建。一、修改表的引擎、查看表结构ALTER TABLE test ENGINE=MyISAM;查看表的结构,引擎已改为MyISAMshow create table test; 通过上述语句,我们确定使用vehicleid这个字段都是英文,本节使用这个字段进行全文索引测试。二、创建全文索引create fulltex...原创 2020-07-23 14:49:35 · 452 阅读 · 0 评论 -
【SQL高级优化】——第十章组合索引和排序索引
一、组合索引 组合索引是创建索引时至少有两列添加索引,创建组合索引时实际上是创建了多个索引。 1、 创建并查看组合索引语句create index mul_index on test(proposalno,startdate);show index from test; 2、最左前缀 当执行以下执行计划时explain select * from test where proposalno='' and startdate='';type...原创 2020-07-22 20:40:44 · 650 阅读 · 0 评论 -
【SQL高级优化】——第九章普通索引、唯一索引
一、普通索引 这是最基本的索引,它没有任何限制,也是我们大多数情况下用到的索引。 1、创建普通索引和删除索引的语法 #创建普通索引语法:create index index_name on table_name(列名); #删除索引语法:drop index title_index on table_name; 注:同表的索引不能重名 不同表的可以重名 2、验证使用普通索引效果 (1)创建索引前执行一个select语句,条件是非主键字段...原创 2020-07-22 15:12:42 · 379 阅读 · 0 评论 -
【SQL高级优化】——第八章explain执行计划之其他属性
以下面两个sql为例,已知policyno是主键。一、key属性 显示的是使用的索引的名称,如果使用了多个索引,则用英文逗号分隔。二、key_len属性 表示的是索引列最大长度。三、ref属性 如使用了索引,这个属性一般都是const。这三个属性一般是联合看的。四、rows属性 根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数。五、Extra属性 额外附加信息。...原创 2020-07-21 20:09:29 · 154 阅读 · 0 评论 -
【SQL高级优化】——第七章explain执行计划之type属性
type属性是查询类型,SQL优化中非常重要的类型。一、type属性从好到坏排序system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all 一般要求至少是range级别,最好能达到ref级别。二、system级别 表中只有一行数据,且不是物理表中只有一行数据。三...原创 2020-07-21 16:43:46 · 2144 阅读 · 0 评论 -
【SQL高级优化】——第六章explain执行计划之id和select_type属性
一、explain的id属性 1、id值相同时表示从上向下执行 2、id值相同被视为一组。 3、如果是子查询,id值会递增,id值越高,优先级越高。 例:在查询页面写下方的语句运行EXPLAIN select * from test where policyno in(select policyno from test where brandname='宝马') or brandname in(select brandname from test where usey...原创 2020-07-21 14:30:48 · 644 阅读 · 0 评论 -
【SQL高级优化】——第五章慢查询日志开启及使用
一、开启慢日志在my.ini中配置开启慢日志,查询超过10s的语句都记录到日志中。##设置慢查询日志slow-query_log=1long_query_time=10二、重启服务 重启服务后,在日志输出目录多出一个DL17238708A005-slow.log文件三、测试验证 在查询对话框中,键入一个查询语句,可以看到这个查询语句查询时间大于10s。select * from test;打开慢查询日志,可以看到如下记录C:\Program F...原创 2020-07-20 15:05:05 · 241 阅读 · 0 评论 -
【SQL高级优化】——第四章二进制日志开启及查看
二进制日志主要是主从复制时使用,主负责增删改,从负责在二进制日志中抓取日志进行从数据库同步。一、开启二进制日志 在my.ini文件中,添加二进制文件配置,直接指定二进制文件名称##设置二进制日志名称log-bin=pythonlog重启mysql,在C:\ProgramData\MySQL\MySQL Server 5.1\data目录中查,二、使用命令查看二进制日志 在对话框中先执行一条update语句update test set sumpremium=...原创 2020-07-20 14:10:32 · 778 阅读 · 0 评论 -
【SQL高级优化】——第三章常规Sql调优思路
一、查看slow-log,分析slow-log,分析出查询慢的语句。二、按照一定优先级,进行一个一个的排查所有慢语句。三、分析top sql,进行explain调试,查看语句执行时间。四、调整索引或语句本身。...原创 2020-07-19 11:55:28 · 171 阅读 · 0 评论 -
【SQL高级优化】——第二章存储引擎
在MySQL中有两大主要的存储引擎:MyISAM和InnoDB,本篇介绍这两种引擎的区别。一、事务方面InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL放在begin transaction和commit之间,组成一个事务。二、外键方面 InnoDB支持外键,MyISAM不支持。对一个包含外键的InnoDB表转外MyISAM会失败。三、索引方面InnoDB是聚集索引,数据文件和索引绑在一起,而..原创 2020-07-17 14:43:31 · 190 阅读 · 0 评论 -
【SQL高级优化】——第一章数据库及数据准备
一、数据库准备 在win10系统中安装MySQL数据库,并安装Navicat 15 for MySQL软件,连接数据库。二、数据准备新建数据库,并从本地导入数据三、新建查询 选中新创建好并导入数据的表test 新建两个查询,分别输入select count(*) from test; select * from test; 在信息栏中分别可以查看到如下两张图 可以看到select * from test;的查询速度要明显长于sel...原创 2020-07-15 16:03:43 · 200 阅读 · 0 评论
分享