sql查询语句用top和order by哪个效率高?
2个回答
2013-09-13
展开全部
如果有索引和没索引的结果是不一样的~~有索引的两个效率差不多,MAX会优化过头直接TOP 1后再流聚合!没时MAX要高点!
SELECT TOP 1000 ID=IDENTITY(INT,1,1),A.NAME INTO #T FROM SYSCOLUMNS A,SYSCOLUMNS B
--DROP TABLE #T
SELECT * FROM #T
--无索引情况
SET STATISTICS IO ON
SELECT TOP 1 ID FROM #T ORDER BY ID DESC
SELECT MAX( ID) FROM #T
SET STATISTICS IO OFF
/*
(所影响的行数为 1 行)
表 '#T__________________________________________________________________________________________________________________00000000001D'。扫描计数 1,逻辑读 5 次,物理读 0 次,预读 0 次。
(所影响的行数为 1 行)
表 '#T__________________________________________________________________________________________________________________00000000001D'。扫描计数 1,逻辑读 5 次,物理读 0 次,预读 0 次。
*/
--有索引情况
CREATE INDEX IDX_ID ON #T(ID)
SET STATISTICS IO ON
SELECT TOP 1 ID FROM #T ORDER BY ID DESC
SELECT MAX( ID) FROM #T
SET STATISTICS IO OFF
/*
(所影响的行数为 1 行)
表 '#T__________________________________________________________________________________________________________________00000000001D'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。
(所影响的行数为 1 行)
表 '#T__________________________________________________________________________________________________________________00000000001D'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。
*/
SELECT TOP 1000 ID=IDENTITY(INT,1,1),A.NAME INTO #T FROM SYSCOLUMNS A,SYSCOLUMNS B
--DROP TABLE #T
SELECT * FROM #T
--无索引情况
SET STATISTICS IO ON
SELECT TOP 1 ID FROM #T ORDER BY ID DESC
SELECT MAX( ID) FROM #T
SET STATISTICS IO OFF
/*
(所影响的行数为 1 行)
表 '#T__________________________________________________________________________________________________________________00000000001D'。扫描计数 1,逻辑读 5 次,物理读 0 次,预读 0 次。
(所影响的行数为 1 行)
表 '#T__________________________________________________________________________________________________________________00000000001D'。扫描计数 1,逻辑读 5 次,物理读 0 次,预读 0 次。
*/
--有索引情况
CREATE INDEX IDX_ID ON #T(ID)
SET STATISTICS IO ON
SELECT TOP 1 ID FROM #T ORDER BY ID DESC
SELECT MAX( ID) FROM #T
SET STATISTICS IO OFF
/*
(所影响的行数为 1 行)
表 '#T__________________________________________________________________________________________________________________00000000001D'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。
(所影响的行数为 1 行)
表 '#T__________________________________________________________________________________________________________________00000000001D'。扫描计数 1,逻辑读 2 次,物理读 0 次,预读 0 次。
*/
2013-09-13
展开全部
order by
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询