查询的SQL语句怎么写才能提高查询效率

 我来答
hit_lubin
2011-04-29 · TA获得超过7889个赞
知道大有可为答主
回答量:1554
采纳率:100%
帮助的人:2021万
展开全部
这是SQL语句优化的问题了。网上好多类似的文章,非常全面。
个人觉得比较常用的是:
SQL语句查询中经常用到的字段建索引,这样可以非常明显的提升查询速度。
FROM表的顺序,大表在前,小表在后,因为检索的顺序从后往前。
WHERE, WHERE A.COLUMN = B.COLUMN,把小表的字段放在后边(B表),大表在前。
固定值查询的放在后边 COLUMN = '1'这种。因为这个也是从后往前的顺序。
如果有(NOT) IN (SELECT ...) 尽量避免,因为IN里面也是一个大的查询,使用 (NOT) EXISTS的语法代替。
还有UNION和UNION ALL,多表联合,UNION的作用是可以去掉重复,如果多表没有重复数据,使用UNION ALL效率也会大大提高。
ZESTRON
2024-09-04 广告
表界面分析在材料科学及化学领域占据核心地位,它深入探索物质表面与界面的微观结构、化学组成及相互作用。通过电商平台射线光电子能谱(电商平台PS)、扫描电子显微镜(SEM)及原子力显微镜(AFM)等先进技术手段,我们Dr. O.K. Wack ... 点击进入详情页
本回答由ZESTRON提供
pegevun
2011-05-09 · TA获得超过691个赞
知道答主
回答量:683
采纳率:0%
帮助的人:0
展开全部
首先在ID上创建聚集索引是必须的。
如果ID是连续的,楼上的的用id来限定语句范围是很快的。
如果id不是连续的,楼主的语句使用了not in,一般这样效率是很低的。
可以把语句改成
select top M *
from table
where id> (select max(id) from (select top N id from table order by id) a)
order by id

这样可以一定程度上提高一些性能。

比如我的表中有300多万条记录,使用楼主的语句执行时间需要9秒多,而用我的语句3秒多。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ThinkIBM
推荐于2016-06-23 · TA获得超过5289个赞
知道大有可为答主
回答量:3263
采纳率:0%
帮助的人:5480万
展开全部
这可以写好几本书了,建议去看书,推荐:
〈Microsoft SQL Server 2005技术内幕〉系列丛书以下4本:
《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》
《Microsoft SQL Server 2005技术内幕:T-SQL查询》
《Microsoft SQL Server 2005技术内幕:存储引擎》
《Microsoft SQL Server 2005技术内幕:查询、调整和优化》
追问
好的,我会仔细研究的
追答
嗯,如果你用Sql2008,现在最新的2008技术内幕也出版中文的了
看你的需要去研究吧
另外,楼下说的大表在前,小表在后之类的顺序没有必要,因为数据库都会创建多个执行计划,然后评估哪个成本最小

Exists和UNION ALL的赞同
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5cbeff7
2011-04-29 · TA获得超过201个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:0
展开全部
高效的sql语句。最好用存储过程。
更多追问追答
追问
几千万条数据的查询也可以吗?
追答
当然可以了,关键看你怎么写高效的查询语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
li44725303
2011-04-29 · 超过10用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:22.7万
展开全部
在设计数据库时建立多个索引以便于查询,用联合查询代替子查询....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式