公司网站上线流程江苏省建设工程协会网站
web/
2025/10/1 20:52:24/
文章来源:
公司网站上线流程,江苏省建设工程协会网站,个人网站 摄影展示,流行的网站开发技术前言
本文主要讲述不同SQL语句的优化策略。
SQL | DML语句
insert语句 插入数据的时候#xff0c;改为批量插入 插入数据的时候#xff0c;按照主键顺序插入 大批量插入数据的时候#xff08;百万#xff09;#xff0c;用load指令#xff0c;从本地文件载入#x…前言
本文主要讲述不同SQL语句的优化策略。
SQL | DML语句
insert语句 插入数据的时候改为批量插入 插入数据的时候按照主键顺序插入 大批量插入数据的时候百万用load指令从本地文件载入需要在全局变量中开启从而允许load指令
update
注意更新语句的检索条件尽量选择有索引的列尽量选择主键索引。
当使用索引的时候InnoDB引擎下执行update语句添加的是行锁当使用主键索引的时候能减少回表查询
# 该事务下使用的锁是行锁
update course set name javaEE where id 1;当没有索引或者索引失效的时候会从行锁升级为表锁
# 该事务下使用的锁是表锁
update course set name SpringBoot where name PHP ;SQL | DQL语句
order by
MySQL的排序有两种方式尽量使用Using index Using filesort将满足条件的数据行放到sort buffer中完成排序操作。使用索引或不使用索引的情况都有可能出现该种排序方式 Using index通过有序索引按照顺序扫描直接返回有序数据不需要额外排序。效率要高于Using filesort
不同场景下会选用不同的排序方式也有某些场景两种排序方式都存在。 使用Using filesort的情况
无索引排序多列排序各列都单独创建索引
# 无索引
explain select id,age,phone from tb_user order by age;
explain select id,age,phone from tb_user order by age, phone;# 多列排序均为单列索引
explain select id,age,phone from tb_user order by age, phone;使用Using index的情况
单列排序有单列索引联合索引正常使用
# 单列索引
explain select age from tb_user order by age;# 联合索引正常使用。给(age、phone)创建联合索引
explain select id,age,phone from tb_user order by age;
explain select id,age,phone from tb_user order by age, phone;其他情况
# 给(age、phone)创建联合索引# Using index; Using filesort
explain select id,age,phone from tb_user order by phone;
explain select id,age,phone from tb_user order by phone, age;# Backward index scan; Using index;
explain select id,age,phone from tb_user order by age, phone desc;联合索引默认是增序的在MySQL8版本中可以建立降序索引
CREATE [UNIQUE | FULLTEXT] INDEX index_name ON table_name(index_col_name asc, index_col_name_2 desc, ...);group by
在分组操作的时候通过索引可以提升效率但是同时也遵循最左匹配原则
# 无索引
# Using temporary
explain select profession , count(*) from tb_user group by profession;# 建立单独索引
# Using index
explain select profession , count(*) from tb_user group by profession;# 建立联合索引(professionage)
# Using index
explain select profession , count(*) from tb_user group by profession;# Using indexUsing temporary
explain select age , count(*) from tb_user group by age;limit
limit查询查询的数据越往后时间消耗越大
# 0.00sec
select * from tb_sku limit 0, 10;# 10.79sec
select * from tb_sku limit 100000, 10;可以通过覆盖索引 子查询根据位置分类属于from后面的子查询根据返回结果分类属于列子查询对SQL进行优化
explain select * from tb_sku t , (select id from tb_sku order by id limit 2000000,10) a where t.id a.id;count
MySQl中统计数量的函数是count()。针对count的优化
方案1不使用count自己计数难搞方案2合理的选用count用法。效率count(字段) count(主键) count(1) count(*) 其余 | 主键优化
满足业务的前提下尽量减低主键的长度插入数据尽量顺主键插入可以选择自增主键尽量不要用uuid或身份证号作为主键插入数据不具备排序性质业务操作避免对主键进行修改
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85244.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!