zoukankan      html  css  js  c++  java
  • SQL提高性能

    1、对外键建立索引,大数据量时性能提高明显(建索引可以直接【Merge Join】,否则还须在查询时生成HASH表作【Hash Join】)

    2、尽量少使用inner join,使用left join是更好的选择

    3、对where 条件建立索引,where 条件中列顺序与索引顺序一致,使用前置的模糊查询时,索引无效

    4、有时候使用union 比join 效率更好(因为join连接比较费时)

    5、有时候自定义函数比长的SQL更有效(是因为函数是已编译过的,长SQL是在执行是编译?)

    6、使用exists(not exists)函数替代in(not in),大数据量时效率提高明显(很好理解,exists,在查询时直接匹配对应的项,而in,则每一个匹配的内容都要便利in的内容)

    使用exists(not exists)函数替代in(not in),提高执行效率

    select RoomTypeId from roomtype where roomtypeid not in
    (select roomtype from fun_SelectPrice('2007-10-28','2007-12-11',100,300))

    select RoomTypeId from roomtype where not exists
    (select * from fun_SelectPrice('2007-10-28','2007-12-11',100,300) where roomtypeid =roomtype )

    http://www.cnblogs.com/zihunqingxin/archive/2013/06/15/3137610.html 也有类似的举例

    7、 索引不可过多,索引过多将会使Insert ,Update, Delete变慢

    C#中使用SQL注意:

    1、建立尽量少的connection,连接是宝贵资源。

    2、尽量少的执行command

    3、transaction应尽量晚开始,尽量快终止

    4、尽量少的使用前置模糊查询,前置模糊查询索引失效。

    5、必要时使用存储过程,存储过程,减少通信(长SQL,只个别参数的区别),减少编译时间,存储过程是编译好的直接执行

  • 相关阅读:
    Leetcode Binary Tree Paths
    Leetcode Lowest Common Ancestor of a Binary Tree
    Leetcode Lowest Common Ancestor of a Binary Search Tree
    Leetcode Path Sum
    Leetcode Symmetric Tree
    Leetcode Invert Binary Tree
    Leetcode Same Tree
    Leetcode Maximum Depth of Binary Tree
    Python Json&Pickle&模块
    Python Shelve模块
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/3201100.html
Copyright © 2011-2022 走看看