sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

SQL语句优化规范
https://www.kancloud.cn/handler/norm/300044

    1. 使用mysql explain 对sql执行效率进行检测 ,explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
    1. 使用方法:在select语句前加上explain即可
    1. explain 分析结果形式如下:
  • table | type | possible_keys | key | key_len | ref | rows | Extra
  • explain 分析结果形式中各属性含义:
  • table :显示这一行的数据是关于哪张表的
  • type :这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
  • possible_keys :显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句
  • key :实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MYSQL会选择优化不足的索引。这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引
  • key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
  • ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
  • rows:MYSQL认为必须检查的用来返回请求数据的行数
  • Extra :返回的描述的意义
    1. 尽量使用 "inner join " 查询替换子查询条件中的 "in " ,防止由于数据量过大,引发数据库挂起问题
  • 3.使用索引应注意问题:
  • 1)查询语句的where条件后边使用 “!=”或“<>”时,索引不生效,和普通字段一样
  • 2)查询语句的where条件后边使用字符串函数或其他函数,索引不生效,和普通字段一样
  • 3)使用连接(join)查询时,只有在主键和外键的数据类型相同时索引才会生效
  • 4)查询语句的where条件后边使用Like关键字应注意,like '%jx%' 和 like '%jx'方式索引均不生效, like 'jx%'方式索引生效
  • 5)InnoDB数据表不支持全文索引
posted on   sunny123456  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-07-06 SQL中的子查询
2021-07-06 C# 使用multipart form-data方式post数据到服务器
2021-07-06 批处理框架 Spring Batch 这么强,你会用吗
2021-07-06 谈谈form-data请求格式 js
2021-07-06 C# Body为form-data file文件上传至第三方接口 http请求
2021-07-06 .net c# 使用form-data方式发起http请求
2021-07-06 使用form-data和raw作为body发起POST请求的区别
点击右上角即可分享
微信分享提示