作者:绿色风
分类:
时间:2022-08-17
浏览:211
楼主 wise |
Q: 对Excel中的SQL进行优化查询一点认识 A:有时候使用SQL,发现运行速度很慢,使用不同的SQL语句,对查询的速度也会产生影响。 本人根据经验,给出几点优化查询的意见: 1、避免使用or运算符,考虑使用in运算符来代替 如[Sheet1$]表中查询语文成绩等于80或者等于90的记录,一般人会使用:- select * from [Sheet1$] where 语文=80 or 语文=90
建议使用in 来代替,可以大大提高了运算的效率,仅对数据量少时有效- select * from [Sheet1$] where 语文 in (60,70)
2、建议少使用distinct 关键字 使用distinct关键字是从数据表中删除重复的行,此时处理的时间会达到增加。 如:查询姓名为“王野”的记录 有些人喜欢:- select distinct * from [Sheet1$] where 姓名='王野'
建议此时去掉distinct,因为- select * from [Sheet1$] where 姓名='王野'
两句的效果一样 3、大数据量时候,避免使用in 该帖中: 如何在Excel中用SQL提取两列的相同项与不同项? http://www.exceltip.net/thread-8122-1-1.html
SQL1:- select 姓名 from [Sheet1$A1:A9] where 姓名 in (select 姓名 from [Sheet1$B1:B10])
SQL2:- select A.姓名 from [Sheet1$A1:A9] A ,[Sheet1$B1:B10] B where A.姓名=B.姓名
SQL2的效率比SQL1语句要高 4、简化联接条件 如查询日期在 2008-3-12 到 2008-9-6 之间的记录 很多人喜欢:- select * from [Sheet1$] where 日期 >= #2008-3-12# and 日期 <= #2008-9-6#
其实该语句效率并不高,建议使用between and 语句代替- select * from [Sheet1$] where 日期 between #2008-3-12# and #2008-9-6#
如有不足之处,请指正。 后期如发现新的优化方法,将及时补充 |
2楼 donghan |
先收下,慢慢研究后再说 |
3楼 mn860429 |
不错,收下了 |
4楼 chury11 |
、避免使用or运算符,考虑使用in运算符来代替 如[Sheet1$]表中查询语文成绩等于80或者等于90的记录,一般人会使用: select * from [Sheet1$] where 语文=80 or 语文=90 复制公式或代码建议使用in 来代替,可以大大提高了运算的效率,仅对数据量少时有效 select * from [Sheet1$] where 语文 in (60,70) 复制公式或代码 ******************************** 此处用in还是not in? |
5楼 xinger7 |
感谢分享! |
6楼 淡烟笼月 |
谢谢老师…… |
7楼 鱼求雨 |
感谢感谢!很感激。 |
8楼 bluexuemei |
学习,期待续集,呵呵! |
9楼 bel_joe |
学习,非常好!我正好在用到
|
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一