查询的SQL语句怎么写才能提高查询效率
展开全部
这是SQL语句优化的问题了。网上好多类似的文章,非常全面。
个人觉得比较常用的是:
SQL语句查询中经常用到的字段建索引,这样可以非常明显的提升查询速度。
FROM表的顺序,大表在前,小表在后,因为检索的顺序从后往前。
WHERE, WHERE A.COLUMN = B.COLUMN,把小表的字段放在后边(B表),大表在前。
固定值查询的放在后边 COLUMN = '1'这种。因为这个也是从后往前的顺序。
如果有(NOT) IN (SELECT ...) 尽量避免,因为IN里面也是一个大的查询,使用 (NOT) EXISTS的语法代替。
还有UNION和UNION ALL,多表联合,UNION的作用是可以去掉重复,如果多表没有重复数据,使用UNION ALL效率也会大大提高。
个人觉得比较常用的是:
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 广告
2024-09-04 广告
表界面分析在材料科学及化学领域占据核心地位,它深入探索物质表面与界面的微观结构、化学组成及相互作用。通过电商平台射线光电子能谱(电商平台PS)、扫描电子显微镜(SEM)及原子力显微镜(AFM)等先进技术手段,我们Dr. O.K. Wack ...
点击进入详情页
本回答由ZESTRON提供
展开全部
首先在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秒多。
如果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秒多。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这可以写好几本书了,建议去看书,推荐:
〈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技术内幕:查询、调整和优化》
〈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的赞同
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
高效的sql语句。最好用存储过程。
更多追问追答
追问
几千万条数据的查询也可以吗?
追答
当然可以了,关键看你怎么写高效的查询语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在设计数据库时建立多个索引以便于查询,用联合查询代替子查询....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询