SQLSERVER千万级数据查询

popotans 2010-09-09 06:32:28
1000万条数据 ,要查出前20 条,我 想到的是这样写:
建立了索引,
select * from ( select top 20 id from table ) order by id desc

我就只会这样写啊 ,可是 有人告诉我说这样写 过时了 ,谁知道怎么 写 效率 最高的?
...全文
633 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
newdigitime 2010-09-12
  • 打赏
  • 举报
回复
表分区 精减表字段 规划表关系 制定好表索引 优化SQL语句 改善服务器硬件环境
一个都不能少。
zhoupin 2010-09-12
  • 打赏
  • 举报
回复
可以的
yeluxing 2010-09-12
  • 打赏
  • 举报
回复
USE northwind;
GO
SET STATISTICS TIME ON
GO
SELECT *
FROM orders
WHERE freight >3.2500
GO
SET STATISTICS TIME OFF;
GO

结果消息


SQL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。

(所影响的行数为 751 行)


SQL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 16 毫秒。

SQL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 16 毫秒。

SQL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 16 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。

  • 打赏
  • 举报
回复
百度 google 告诉你很多
yeluxing 2010-09-12
  • 打赏
  • 举报
回复
你自已可以有尝试下吧,很多时候学习靠自已试验试出真理来的
你可以用多程方法试查询的效率
可以在查询分析器-“查询”-"显示执行计划"去研究你的代码问题
zdbfba739 2010-09-12
  • 打赏
  • 举报
回复
sql 工具里有最优的SQL语句,就是根据你写的语句,它会自己产生一些语句,效果和你写的语句查询效果一样。
tray123 2010-09-12
  • 打赏
  • 举报
回复
应该是这样写的,不用索引直接写select top 20 * from table order by id desc比你的慢多了,建立了索引快多了
yao991118 2010-09-10
  • 打赏
  • 举报
回复
学习来了
青年庞 2010-09-10
  • 打赏
  • 举报
回复
这张表要是经常被查询,增删改比较少,建立索引还是很提高效率的,要是增删改也比较多,还是不要建立索引了。
kkbac 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 popotans 的回复:]

引用 6 楼 heaventohell17 的回复:
10W级的用select top 20 id from table 都很慢了....

那么 不用 top 应该怎么写呢?
[/Quote]

top不会这么差吧. lz别怕, 直接top.
gaopeng1988 2010-09-10
  • 打赏
  • 举报
回复

select * from ( select top 20 upper(id) from table as tableName ) order by id desc
lchy110 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 popotans 的回复:]

引用 5 楼 yubanzhi 的回复:
建立的索引不 太合适吧!
select * from ( select top 20 id from table ) order by id desc
这个 没有必须要这样写, 直接 top

我只是这样举个例子,有时候 ,需要反过来排序,就 要在套一层了
[/Quote]
反过来排序是什么意思? asc?
其实海量级数据查询的话 你的表结构很重要 给你的关键字段 加索引 有必要的话再建分区表。这样查询效率才高
popotans 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yubanzhi 的回复:]
建立的索引不 太合适吧!
select * from ( select top 20 id from table ) order by id desc
这个 没有必须要这样写, 直接 top
[/Quote]
我只是这样举个例子,有时候 ,需要反过来排序,就 要在套一层了
popotans 2010-09-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 heaventohell17 的回复:]
10W级的用select top 20 id from table 都很慢了....
[/Quote]
那么 不用 top 应该怎么写呢?
  • 打赏
  • 举报
回复
学习学习
heaventohell17 2010-09-09
  • 打赏
  • 举报
回复
10W级的用select top 20 id from table 都很慢了....
paual779 2010-09-09
  • 打赏
  • 举报
回复
建立的索引不 太合适吧!
select * from ( select top 20 id from table ) order by id desc
这个 没有必须要这样写, 直接 top

wuyq11 2010-09-09
  • 打赏
  • 举报
回复
建索引
SELECT TOP 页大小 *
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id

SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 页大小*(页数-1)
q107770540 2010-09-09
  • 打赏
  • 举报
回复
select top 20 * from table order by id desc
冰川711 2010-09-09
  • 打赏
  • 举报
回复
select to 20 * from table order by id
加载更多回复(1)

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧