WEB开发,常见MySQL 查询优化

原创 2017年11月15日 14:11:17
MySql sql 常用优化点

1.查找优化点:查看sql语句的执行计划

    比如 explain select * from tbl_user where id=1

    id | select_type|table|type|possible_kes|key|key_len|ref|rows|Extra

    1|SIMPLE|tbl_user|const|PRIMARY|PRIMARY|4|const|1|null


    简单解释:
        id:select操作表的顺序,顺序从大到依次执行.
        select_type :选择的类型,如: SIMPLE(简单的)
        type :访问类型。ALL(全表扫描),index(索引扫描),range(范围扫描),
             ref (非唯一索引扫描),eq_ref(唯一索引扫描),const(常数引用) 速度依次由慢到快。
        table :查询的表
        possible_keys :查询语句,可能走的索引(不一定是真实的)。
        key :显示MySQL实际使用的索引,包括主键索引,或者自建索引的名字。
        key_len :索引所使用的字节数
        ref :连接匹配条件,若走主键索引值为const, 全表扫描为null值
        rows :扫描行数,通常情况下,rows越小,效率越高, 这是优化点。
        Extra:包含执行SQL时的真实情况,比如”using where”,表示使用where筛选得到的值


2.建索引注意点
(1)选择区分度很高的列上见索引。

    参考:(公式 q=count(distinct(column)/count(*), 0<=q<=1,q=1最合适建索引))


(2)联合索引(多列建立索引) 比如 alter table tbl_user add index idx_uname_phone(uname,phone);

        (2-1)最左前缀匹配原则: MySQL会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配.

        如 select * from tbl_user where uanme='xiariwa' and createdate<"2017-11-15" and phone='13819831231'

                 由于出现了<号,后面的phone 就不会走索引。

        (2-2)函数运算:在索引列上进行函数运算,索引会失效.


3.常见优化场景
(1)主键连续,改limit查询为范围查询。
    如 limit 10000,100 改成between 100000 and 1000100;

(2)防止数据类型隐式转换。将参数值改成与表中列数据类型一致。
   phone 数据库保存的是char类型,而传入的是数字,应该这样转换,才会走索引
   select * from tbl_user where phone=cast(13819831231 as char);;

相关文章推荐

Java Web开发常见问题.pdf

  • 2013年04月21日 03:50
  • 889KB
  • 下载

Java Web开发工具配置 常见问题

问题一: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path ...

web开发常见安全漏洞解决办法

  • 2017年08月15日 17:05
  • 1.16MB
  • 下载

web开发常见漏洞解决方案

  • 2017年04月11日 16:26
  • 796KB
  • 下载

Web开发常见的几个漏洞解决方法 ---SQL注入

平时工作,多数是开发Web项目,由于一般是开发内部使用的业务系统,所以对于安全性一般不是看的很重,基本上由于是内网系统,一般也很少会受到攻击,但有时候一些系统平台,需要外网也要使用,这种情况下,各方面...

web开发常见安全问题(SQL注入、XSS攻击、CSRF攻击)

web开发常见安全问题(SQL注入、XSS攻击、CSRF攻击)

Web开发常见的几个漏洞解决方法 ---SQL注入

Web开发常见的几个漏洞解决方法 ---SQL注入 平时工作,多数是开发Web项目,由于一般是开发内部使用的业务系统,所以对于安全性一般不是看的很重,基本上由于是内网系统,一般也很少会受...

[转载]WEB开发中一些常见的攻击方式

SQL注入 最常见的攻击方式,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密...

10 大常见的web开发错误

自从1990年有了www互联网这个概念后,web应用程序经历了从提供静态HTML页面到完全动态的复杂的业务应用的改变。   今天我们有各种各样的电子资源或图书来告诉我们如何开发各种各样的应用程序...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEB开发,常见MySQL 查询优化
举报原因:
原因补充:

(最多只允许输入30个字)