SQL技巧

作者: wpf_register | 来源:发表于2019-08-29 14:00 被阅读0次

0.查询时明确查询字段,不用星号*代替

//测试时可以这样写,但项目 中不能这样写
SELECT * FROM

1.负向条件查询不能使用索引

SELECT * FROM  `t_sys_user` WHERE phone_number != '15199999999' ;
//not in,not exists 不是好的习惯,
//可以优化为in 查询
SELECT * FROM  `t_sys_user` WHERE phone_number not in('15199999999','18671701111');
  1. 前导模糊查询不能使用索引
SELECT * FROM order where desc like '%XX';
可以优化为非前导
SELECT *FROM order where desc likn 'XX%'
  1. 在属性上进行计算不能使用索引
SELECT * FROM order WHERE YEAR(date) < '2019';
//即使date上建立了索引也会全表扫描,可优化为值计算
 SELECT * FROM order where date < CURDATE();
或
SELECT * FROM order WHERE date < '2019-01-01'
  1. 允许为null的列查询有潜在的坑
    单列索引不存null值,复合索引 不存在全为null的值。
    如果列允许为null,结果可能不符合预期。
    所以尽量用not null 约束或设置默认值
SELECT * FORM user WHERE name !='zhangsan';
如果name允许为null,索引不存null值,结果集中不包含这条 
可以优化为
SELECT * FROM student WHERE  Sname != '赵雷' OR Sname is NULL;
  1. 如果确认只有一条结果,limit 1 能提高效率
//虽然我们知道结果只有一条,但数据库并不知道,
//所以我们明确告诉它,让它主动停止游标移动
SELECT * FROM user where sid = '*** ***' limit 1 
  1. 把计算放到业务层而不是数据库层,既能节省CPU,还可能有缓存效果。
SELECT * FROM order where date < curdate();
//可以优化一下
$curdate = date('Y-m-d');
$res = mysql_query('SELECT  * FROM order where date < $curdate')
  1. 强制类型转换会全表扫描
//手机号是字符串形式的要加引号
SELECT * FROM   user  where phone = 13484474404

相关文章

  • sql 技巧

    distinct在一种情况下比group by快很多:例:select distinct(num) from te...

  • SQL技巧

    0.查询时明确查询字段,不用星号*代替 1.负向条件查询不能使用索引 前导模糊查询不能使用索引 在属性上进行计算不...

  • sql技巧

    1.说明:几个高级查询运算词 A: UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE...

  • sql面试题大全

    sql面试题大全1、10条SQL优化技巧2、58到家MySQL数据库开发规范3、java.sql.Date和jav...

  • sql面试题大全

    sql面试题大全 1、[10条SQL优化技巧](http://www.wityx.com/post/250_1_1...

  • Mysql 优化

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

  • 4_EXECUTE IMMEDIATE用法

    解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前。使用技巧 EXEC...

  • spark sql 调试技巧--内置udf查看

    spark sql 调试技巧--内置udf查看 Spark SQL内置了许多常用的udf,我们该如何拿到用户的ud...

  • (103)mysql优化之sql语句优化

    概述 该篇主要介绍一些常用的sql优化技巧 sql优化 1.select * from table_name wh...

  • SQL Server技巧

    SQL Server2008 删除大量数据http://blog.csdn.net/zhengfeng2100/a...

网友评论

      本文标题:SQL技巧

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