建立了索引,
select * from ( select top 20 id from table ) order by id desc
我就只会这样写啊 ,可是 有人告诉我说这样写 过时了 ,谁知道怎么 写 效率 最高的?
22 个解决方案
#1
为什么要那么费劲!
select to 20 * from table order by id desc
select to 20 * from table order by id desc
#2
select to 20 * from table order by id
#3
select top 20 * from table order by id desc
#4
建索引
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)
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)
#5
建立的索引不 太合适吧!
select * from ( select top 20 id from table ) order by id desc
这个 没有必须要这样写, 直接 top
select * from ( select top 20 id from table ) order by id desc
这个 没有必须要这样写, 直接 top
#6
10W级的用select top 20 id from table 都很慢了....
#7
那么 不用 top 应该怎么写呢?
#8
我只是这样举个例子,有时候 ,需要反过来排序,就 要在套一层了
#9
反过来排序是什么意思? asc?
其实海量级数据查询的话 你的表结构很重要 给你的关键字段 加索引 有必要的话再建分区表。这样查询效率才高
#10
select * from ( select top 20 upper(id) from table as tableName ) order by id desc
#11
top不会这么差吧. lz别怕, 直接top.
#12
这张表要是经常被查询,增删改比较少,建立索引还是很提高效率的,要是增删改也比较多,还是不要建立索引了。
#13
#14
学习来了
#15
学习学习
#16
可以的
#17
应该是这样写的,不用索引直接写select top 20 * from table order by id desc比你的慢多了,建立了索引快多了
#18
sql 工具里有最优的SQL语句,就是根据你写的语句,它会自己产生一些语句,效果和你写的语句查询效果一样。
#19
你自已可以有尝试下吧,很多时候学习靠自已试验试出真理来的
你可以用多程方法试查询的效率
可以在查询分析器-“查询”-"显示执行计划"去研究你的代码问题
你可以用多程方法试查询的效率
可以在查询分析器-“查询”-"显示执行计划"去研究你的代码问题
#20
百度 google 告诉你很多
#21
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 毫秒。
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 毫秒。
#22
表分区 精减表字段 规划表关系 制定好表索引 优化SQL语句 改善服务器硬件环境
一个都不能少。
一个都不能少。
#1
为什么要那么费劲!
select to 20 * from table order by id desc
select to 20 * from table order by id desc
#2
select to 20 * from table order by id
#3
select top 20 * from table order by id desc
#4
建索引
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)
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)
#5
建立的索引不 太合适吧!
select * from ( select top 20 id from table ) order by id desc
这个 没有必须要这样写, 直接 top
select * from ( select top 20 id from table ) order by id desc
这个 没有必须要这样写, 直接 top
#6
10W级的用select top 20 id from table 都很慢了....
#7
那么 不用 top 应该怎么写呢?
#8
我只是这样举个例子,有时候 ,需要反过来排序,就 要在套一层了
#9
反过来排序是什么意思? asc?
其实海量级数据查询的话 你的表结构很重要 给你的关键字段 加索引 有必要的话再建分区表。这样查询效率才高
#10
select * from ( select top 20 upper(id) from table as tableName ) order by id desc
#11
top不会这么差吧. lz别怕, 直接top.
#12
这张表要是经常被查询,增删改比较少,建立索引还是很提高效率的,要是增删改也比较多,还是不要建立索引了。
#13
#14
学习来了
#15
学习学习
#16
可以的
#17
应该是这样写的,不用索引直接写select top 20 * from table order by id desc比你的慢多了,建立了索引快多了
#18
sql 工具里有最优的SQL语句,就是根据你写的语句,它会自己产生一些语句,效果和你写的语句查询效果一样。
#19
你自已可以有尝试下吧,很多时候学习靠自已试验试出真理来的
你可以用多程方法试查询的效率
可以在查询分析器-“查询”-"显示执行计划"去研究你的代码问题
你可以用多程方法试查询的效率
可以在查询分析器-“查询”-"显示执行计划"去研究你的代码问题
#20
百度 google 告诉你很多
#21
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 毫秒。
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 毫秒。
#22
表分区 精减表字段 规划表关系 制定好表索引 优化SQL语句 改善服务器硬件环境
一个都不能少。
一个都不能少。