zoukankan      html  css  js  c++  java
  • 对于使用 UNIKON ALL 中表的顺序

    对于使用 UNIKON ALL (或 UNION, 如果不特别关注是否有重复数据, 应该使用UNION ALL) 的查询

    请注意 UNION ALL 中表的顺序

    -- 这个查询中的tb1, tb2 ,应该按照数据量大小倒排序,数据量最大的表,应该出现在最前面

    SELECT * FROM tb1 WITH(NOLOCK)

    UNION ALL

    SELECT * FROM tb2 WITH(NOLOCK)

             Henson 这国的一个项目, 查询效率低, 就是因为表的顺序有问题,因为字段上的设置有差异, 在相同的优先组下, 会以前面的表结构为标准来做转换,由于大数据量的表放在后面,导致被转换的是大表, 从而产生了额外的性能开销

             另外,过于复杂的查询, 不要追求一句搞定, 适当考虑把重复使用的查询先存到临时表, 降低查询的复杂程度, 并且通过分步骤+判断来减少查询对象, 会对性能有帮助

             Henson这边之前优化的查询就有这种问题, 一个查询要翻几页才看得完, 涉及的对象多, 还嵌套复杂的视图, 这种人看着累,SQL要分析出这个查询也是很累的

             一句查询是告诉 SQL 最终想要的结果, 给 SQL 更多发挥的空间;但过于复杂的一句,可达到目标的方案就会非常多,SQL 就无法评估全部的方案,所以其最终决定的执行的方案就不一定是最优的;另外,SQL在评估方案的时候,其中一个重要的信息就是表中的数据分布,这是一个大概统计值,当要评估的东西多的时候,这个大概的结果累计所评估的结果与实际结果的差异就可能会非常大,这也会导致查询方案有问题。当然,也不要过于干涉

             当然,必须注意的是,也不要太过于注重把语句分解为多步+临时表去做,那样SQL可发挥的空间低,性能可能也会变得不好。如果把握,没有一个准确的尺度,但如果一个查询分翻几页才能看完的话,我想就应该是有问题了.

    出处:Jack Zou

    作者:Bober Song
    出处:http://bober.cnblogs.com/
    CARE健康网: http://www.aicareyou.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    css绘制各种图形,三角形,长方形,梯形
    函数中,对形参做不加var的全局溢出赋值,可改变形参所指向的实参的本身值
    求数组中最大值,最小值
    placeholder 效果的实现,input提示字,获取焦点时消失
    js里apply用法
    jquery.lazyload.js-v1.9.1延时加载插件,已兼容ie6和各大浏览器
    移动端 元素外面使用伪类after加边框 导致其内部元素无法选中
    element组件知识点总结
    常用样式总结
    深入理解iframe
  • 原文地址:https://www.cnblogs.com/bober/p/2864819.html
Copyright © 2011-2022 走看看