SQL语言使用';描述';
我测试我的SQL语言,发现一个问题,当我删除'desc'时,SQL运行得很快,但当我添加'desc'时,SQL运行得很慢。如何优化我的SQL语言。多谢各位SQL语言使用';描述';,sql,Sql,我测试我的SQL语言,发现一个问题,当我删除'desc'时,SQL运行得很快,但当我添加'desc'时,SQL运行得很慢。如何优化我的SQL语言。多谢各位 DELETE FROM [WHRW_BATCH] WHERE [Start_TM] NOT IN (SELECT TOP 10000 [Start_TM] FROM [WHRW_BATCH] ORDER BY [Start_TM] DES
DELETE FROM [WHRW_BATCH]
WHERE [Start_TM] NOT IN (SELECT TOP 10000 [Start_TM]
FROM [WHRW_BATCH]
ORDER BY [Start_TM] DESC
这看起来像SQL Server语法。在该数据库中,我建议使用可更新的CTE:
WITH todelete AS (
SELECT wb.*,
ROW_NUMBER() OVER (ORDER BY Start_TM DESC) as seqnum
FROM WHRW_BATCH wb
)
DELETE FROM todelete
WHERE seqnum > 10000;
这将保留10000条最新记录
如果表相当大(即大多数记录被删除),则您可能会发现临时表的速度更快:
select top (10000) wb.*
into temp_whrw_batch
from WHRW_BATCH wb
order by Start_TM desc;
然后从表中删除所有行并重新插入:
truncate table WHRW_BATCH;
insert into WHRW_BATCH
select *
from temp_whrw_batch;
-请添加一个标记,以指定您使用的是
mysql
、postgresql
、sqlserver
、oracle
还是db2
——还是其他完全相同的东西。您的数据索引是否按asc排序?这也许可以解释为什么订购desc需要时间。对不起,我做的标签不清楚。这是SQL SERVER,谢谢。