美文网首页Sql数据库
Sql语句注意点

Sql语句注意点

作者: IT飞牛 | 来源:发表于2017-11-26 22:16 被阅读24次

    (一)select

    不要对字段进行null判断;
    用函数charindex()和前面加通配符%的LIKE执行效率一样;
    移除不必要的字段和表
    union效率比or要高,除了or两边的查询列是一样的情况;
    在所需要的最小数据集上操作,where条件设置好,不要区多余数据
    字段提取要按照“需多少、提多少”的原则,避免“select
    where或者order by/group by字段建立索引;
    不要在where语句中使用非操作,如:NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE等;
    like只能使用‘admin2%’形式,不能使用‘%dmin22’;
    or会引起全表扫描;
    in的作用相当于or;exists 和 in 的执行效率是一样的;
    count(
    )不比count(字段)慢
    order by按聚集索引列排序效率最高
    高效的TOP,sqlserver中的top是进过优化的,分页使用top
    移除你JOIN和WHERE子句中的计算操作、函数
    在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段
    如果在 where 子句中使用参数,也会导致全表扫描;select id from t where num=@num

    (二)left join

    左表的主键、外键都要做索引
    网上资料说left join后面where 条件只要有一个有返回值,则转换成select * from t1,t2 where con1 and con2的形式,实测效率没有任何提升

    (三)union

    union和or执行结果一样,但是,当搜索条件中搜索字段不同时,union效率比or要高;当搜索条件中搜索字段一样时,效率一样差。union默认会去除重复记录,union all会显示全部记录

    (四)update

    where建立索引

    (五)delete

    where建立索引

    (六)in

    in的作用相当于or;exists 和 in 的执行效率是一样的;

    (七)sum

    sum函数注意溢出,可能需要使用sum(cast(id as bigint))转换成8字节的bigint

    (八)group by

    建立索引

    (九)order by

    建立索引

    相关文章

      网友评论

        本文标题:Sql语句注意点

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