SQL优化

作者: Zdigi | 来源:发表于2018-09-21 00:25 被阅读0次

    不要让Oracle做得太多

    • 避免复杂的多表关联
    • 避免使用“ * ”
    • 避免使用耗费资源的操作
        带有DISTINCT、UNION、INTERSECT、OREDER BY的SQL语句,会启动SQL引擎去执行消耗资源的排序功能
      1.用EXISTS 替换 DISINCT
      2.用UNION ALL 替换 UNION

    给优化器更明确的命令

    • 自动选择索引
        如果表中有两个或两个以上索引,并且其中有一个唯一性索引,其他是非唯一性的,此时,Oracle将使用唯一性索引而完全忽略非唯一性索引。
    • 避免在索引列上使用函数或者计算列
        在where子句中,如果索引列是函数的一部分或存在列的计算,优化器将不使用索引而使用全表扫描。
    • 避免在索引列上使用NOT
        与上点相同,在索引列中使用NOT也会使得优化器进行全表扫描,即当Oracle遇到NOT时,就会停止使用索引而执行全表扫描。
    • 避免使用前置通配符
        形如:'%123';这种
    • 避免使用IS NULL\IS NOT NULL
        优化器会忽略索引
    • 避免出现索引列自动转换
        当比较不同数据类型的数据时,Oracle会自动对列进行简单的类型转换。例如:User_no是字符类型的索引列 User_no = 123; 实际自动转换成 TO_NUBER(User_no)= 123;

    相关文章

      网友评论

          本文标题:SQL优化

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