ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > SQL in Excel > 对Excel中的SQL进行优化查询一点认识

对Excel中的SQL进行优化查询一点认识

作者:绿色风 分类: 时间:2022-08-17 浏览:137
楼主
wise
Q: 对Excel中的SQL进行优化查询一点认识
A:有时候使用SQL,发现运行速度很慢,使用不同的SQL语句,对查询的速度也会产生影响。
本人根据经验,给出几点优化查询的意见:
1、避免使用or运算符,考虑使用in运算符来代替
如[Sheet1$]表中查询语文成绩等于80或者等于90的记录,一般人会使用:
  1. select * from [Sheet1$] where 语文=80 or 语文=90
建议使用in 来代替,可以大大提高了运算的效率,仅对数据量少时有效
  1. select * from [Sheet1$] where 语文 in (60,70)
2、建议少使用distinct 关键字
使用distinct关键字是从数据表中删除重复的行,此时处理的时间会达到增加。
如:查询姓名为“王野”的记录
有些人喜欢:
  1. select distinct * from [Sheet1$] where 姓名='王野'
建议此时去掉distinct,因为
  1. select  * from [Sheet1$] where 姓名='王野'
两句的效果一样
3、大数据量时候,避免使用in
该帖中:
如何在Excel中用SQL提取两列的相同项与不同项? http://www.exceltip.net/thread-8122-1-1.html

SQL1:
  1. select 姓名 from [Sheet1$A1:A9] where 姓名  in (select  姓名 from [Sheet1$B1:B10])
SQL2:
  1. select A.姓名 from [Sheet1$A1:A9] A ,[Sheet1$B1:B10] B where A.姓名=B.姓名
SQL2的效率比SQL1语句要高
4、简化联接条件
如查询日期在  2008-3-12 到  2008-9-6 之间的记录
很多人喜欢:
  1. select * from [Sheet1$]  where  日期 >= #2008-3-12# and 日期 <= #2008-9-6#
其实该语句效率并不高,建议使用between  and 语句代替
  1. 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总版主之一

评论列表
sitemap