zoukankan      html  css  js  c++  java
  • sql,explain

    2,3调转了,先on相同的行,再join另外的行,后面where ,有时候on会放在where,效率沒有那么高

     https://www.cnblogs.com/jalja/p/7670712.html

    1,join on得等于条件写在where一样,都是一个primary(type=eq_ref),一个外键

    1,如果一个left join那就是全表扫瞄

    2,主键查找,一般都是const

    3,主键>那种,一般都是range

    4,刚好覆盖索引,type=index,不加where那种,全一个索引

    5,in查询在沒有命中的情况下是rang,沒有是all

    6,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。

    7,应尽量避免在 where 子句中使用 or 来连接条件, 否则将导致引擎放弃使用索引而进行全表扫描, 可以 使用UNION合并查询: select id from t where num=10 union all select id from t where num=20

    8,不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

    SELECT * FROM record WHERE substrINg(card_no,1,4)=’5378’ (13秒)
    SELECT * FROM record WHERE amount/30< 1000 (11秒)
    SELECT * FROM record WHERE convert(char(10),date,112)=’19991201’ (10秒)
    分析:
    WHERE子句中对列的任何操作结果都是在SQL运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被SQL优化器优化,使用索引,避免表搜索,因此将SQL重写成下面这样:
    SELECT * FROM record WHERE card_no like ‘5378%’ (< 1秒)
    SELECT * FROM record WHERE amount< 1000*30 (< 1秒)
    SELECT * FROM record WHERE date= ‘1999/12/01’ (< 1秒)

     9,和子查询相比

    3.优劣

    ① 子查询可以使用统计函数,连接不行;(本质是where不能用,但having能

    ② 子函数可以与UPDATE、INSERT和DELETE一起使用,连接不行;

    ③ 连接的运算速度快于子查询。

    10,'where-in-select-max'的模式有时候可以用limit代替,也可以尝试用连接

  • 相关阅读:
    TMapData地图数据控件 (转贴)
    asp.net2.0 GridView 导出到 Excel
    购买电子地图数据
    MapInfo MapXtreme 2005 v6.6 Beta 1 Trial(support dotnet 2.0)
    强烈建议supermap更换BBS
    《3S新闻周刊》(转帖)
    发布一个OutlookBar控件,支持数据库绑定(完全开源)
    ERP中的计划与控制
    企业的生产特征
    eaby技术架构变迁
  • 原文地址:https://www.cnblogs.com/vhyc/p/12240582.html
Copyright © 2011-2022 走看看