SQL优化:合理使用变量
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
新手小伙伴平时可能比较少用到变量,其实变量在数据查询过程中经常使用到,而且可以有效提高查询速度。 变量其实就是我们定义的一个可变参数,其基本语法如下:
使用变量后,相同的查询语句如果只是赋值不同,可以重复使用第一次的执行计划,做到一次解析,多次复用的效果,减少执行计划的解析就会相应提高查询速度了。我们看如下示例:
如果单独执行这两条查询语句,查询优化器认为是不同的SQL语句,需要解析两次。 我们使用变量对其进行修改
执行完之后,只需要修改@ORDER_ID的值为'113’,就可以重复使用上面的执行计划了。 由于上面的语句比较简单,可能看不出效果,但是如果遇到比较复杂的查询语句,变量查询往往能起到很好的效果。
事物都存在两面性,变量对常见查询可以提高查询效率。但是也有例外,比如在WHERE条件中的字段是“倾斜字段”的时候。 “倾斜字段”指该列中的绝大多数的值都是相同的,比如人口调查表,其中“民族”这列,90%以上都是汉族。那么如果一个SQL语句要查询30岁的汉族人口有多少,那“民族”这列必然要被放在WHERE条件中。这个时候如果采用绑定变量@NATION会存在很大问题。 如果@NATION传入的第一个值是“汉族”,那整个执行计划必然会选择表扫描。
当第二个值传入的是“畲族”,正常情况下“畲族”在表中占的比例可能只有万分之一,应该采用索引查找。
由于重用了第一次解析的“汉族”的那个执行计划,那么第二次也将采用表扫描方式。这个问题就是著名的“变量窥测”,建议对于“倾斜字段”不要采用绑定变量。 今天的课就讲到这里,如果对变量还有什么不明白的,可以在底下留言,我会一一回复的。 阅读原文:原文链接 该文章在 2025/6/23 12:57:24 编辑过 |
关键字查询
相关文章
正在查询... |