SQL优化

作者: HueyYao | 来源:发表于2021-01-03 21:28 被阅读0次

SQL有索引但是执行效率还是很低

存在索引但是检索效率依旧慢的原因:

整理了集中日常使用过程中的优化问题(参考学习后做了总结)

第一种情况:

select * from t1 where date(c) ='2019-05-21';
优化后:
select * from t1 where c>='2019-05-21 00:00:00' and c<='2019-05-21 23:59:59';

类似求某一天或者某一个月数据的需求,建议写成类似上例的范围查询,可让查询能走索引。避免对条件索引字段做函数处理。

第二种情况:

select user_name,tele_phone from user_info where tele_phone =11111111111;
优化后:
select user_name,tele_phone from user_info where tele_phone ='11111111111';

隐式转换导致查询慢的情况在工作中遇到过几次,有时字段名对开发写SQL产生了影响,比如曾经遇到过字段名是user_num,而实际字段类型是char,但是开发在写SQL时误认为是int型,导致漏写单引号而发生隐式转换。所以建议在写SQL时,先看字段类型,然后根据字段类型写SQL。

第三种情况:

select * from t1 where a like '%1111%';
优化后:
select * from t1 where a like '1111%';

如果条件只知道中间的值,需要模糊查询去查,那就建议使用ElasticSearch或其它搜索服务器。

第四种情况:

select * from t1 where b>=1 and b <=2000;
优化后:
mysql> select * from t1 where b>=1 and b <=1000;
mysql> select * from t1 where b>=1001 and b <=2000;

实际这种范围查询而导致使用不了索引的场景经常出现,比如按照时间段抽取全量数据,每条SQL抽取一个月的;或者某张业务表历史数据的删除。遇到此类操作时,应该在执行之前对SQL做explain分析,确定能走索引,再进行操作,否则不但可能导致操作缓慢,在做更新或者删除时,甚至会导致表所有记录锁住,十分危险。

第五种情况:

select * from t1 where b-1 =1000;
优化后:
select * from t1 where b =1000 + 1;

一般需要对条件字段做计算时,建议通过程序代码实现,而不是通过MySQL实现。如果在MySQL中计算的情况避免不了,那必须把计算放在等号后面。

相关文章

  • 常用sql优化2019-09-27

    sql优化 sql优化.................................................

  • mysql数据库优化

    1. Mysql优化介绍 1.1 sql优化 a. sql优化分析b. 索引优化c. 常用sql优化d. 常用优化...

  • Mysql 优化

    1.Sql优化 1)sql优化分析2)索引优化3)sql语句优化4)一些常用的技巧优化 (正则、函数) 2.优化数...

  • sql优化的一般策略

    sql 优化的一般策略:索引优化,sql改写,参数优化,优化器 索引优化 以select * from vvsho...

  • SQL语句优化, since 2022-04-22

    (2022.04.22 Fri)SQL语句的优化目的在于提高SQL语句的运行效率。注意SQL优化和数据库优化的区别...

  • 11-mysqlSQL分析

    六星教育 - java-mysql优化1909 SQL优化 所谓SQL优化:基于MySQL的优化器查询规则来优化S...

  • MySQl优化学习笔记(七)SQL优化简介

    一、SQL优化简介 1、我们平时说的SQL优化就是优化SQl语句和索引(通俗说就是使用什么样的SQL语句能够让索引...

  • 实战001-提煤单明细查询

    一、code 二、优化代码 2.1、优化在循环中发SQL 优化后代码 二、SQL 二、使用 Profile 分析 ...

  • MySQL优化策略

    1、 sql优化 1.1 SQL 语句简化,简化是 SQL 优化的一大利器,因为简单,所以优越。 1.2 尽可...

  • sql优化工具使用之explain

    关于sql优化,这个话题太大,我怕我说不好,因此本文仅以sql优化工具为题,如果对sql优化有兴趣,我建议去阅读下...

网友评论

      本文标题:SQL优化

      本文链接:https://www.haomeiwen.com/subject/vdmpoktx.html