这是一次冒险.我从上一个问题中的循环重复查询开始,但每个循环将覆盖所有1700万条记录,这意味着需要几周时间(仅运行*select count * from MyTable*需要我的服务器4:30分钟使用MSSQL 2005).我从这个网站和这篇文章中发现了一些信息.
并且已经到达下面的查询.问题是,对于任何类型的性能,这是在1700万条记录上运行的正确类型的查询吗?如果不是,那是什么?
SQL QUERY:
DELETE tl_acxiomimport.dbo.tblacxiomlistings
WHERE RecordID in
(SELECT RecordID
FROM tl_acxiomimport.dbo.tblacxiomlistings
EXCEPT
SELECT RecordID
FROM (
SELECT RecordID, Rank() over (Partition BY BusinessName, latitude, longitude, Phone ORDER BY webaddress DESC, caption1 DESC, caption2 DESC ) AS Rank
FROM tl_acxiomimport.dbo.tblacxiomlistings
) al WHERE Rank = 1)
Run Code Online (Sandbox Code Playgroud) 我有一个表MRU,有3列.
(VALUE varchar(255); TYPE varchar(20); DT_ADD datetime)
Run Code Online (Sandbox Code Playgroud)
这是一个简单地存储条目并记录其记录日期时间的表.我想要做的是:每当我添加超过特定数字的新条目时,删除最旧的条目.
这是我的查询:
delete from MRU
where type = 'FILENAME'
ORDER BY DT_ADD limit 1;
Run Code Online (Sandbox Code Playgroud)
错误消息是:SQL错误:接近"ORDER":语法错误...
查询返回错误.
从表1中删除WHERE ConditionID =?ConditionID;
DELETE FROM Table2 WHERE ConditionID=?ConditionID;
DELETE FROM Table3 WHERE ConditionID=?ConditionID;
Run Code Online (Sandbox Code Playgroud)
ConditionID是Table1,Table2,Table3中的一列,而不是单独运行3次,有没有办法在单个查询中运行全部三个(在mysql中)?
早些时候我有2000条记录.
我解雇下面的查询后,我将有1500条记录.
DELETE FROM logInfo WHERE datediff(now(), whatTime) >= 2
Run Code Online (Sandbox Code Playgroud)
是否有任何查询可以告诉我上述记录删除了多少条记录?
我知道我可以在删除命令之前使用下面的查询,但我只是好奇是删除后还有其他任何方法可以找到.
SELECT COUNT(*) FROM logInfo WHERE datediff(now(), whatTime) >= 2
Run Code Online (Sandbox Code Playgroud)
我需要在JAVA或MYSQL中使用它.
我知道在php中它会是 mysql_affected_rows()
我必须根据id值删除大量数据.哪一个是最快的:
DELETE FROM myTable WHERE id = '10' OR id = '20' OR id = '43' OR id = '54' .......
Run Code Online (Sandbox Code Playgroud)
要么
DELETE FROM myTable WHERE id = '10'; DELETE FROM myTable WHERE id = '20'; ........
Run Code Online (Sandbox Code Playgroud)
如果您有其他解决方案,请不要犹豫告诉我.
(这里的id不是主键或索引,是一个外键,因为它引用了一个单词,我可以在这个数据库中有一个单词的多个条目)
我使用MySQL,但我希望我的查询可以应用于其他RDBMS
这应该相对简单.我挖了MySql文档,找不到相关的信息.
场景很简单.我有一个有3列的表.所有都是复合唯一键,因为所有键必须唯一才能成为有效行.
如何在此设置中使用DELETE NOT IN?
我尝试过类似的东西:
DELETE FROM my_table WHERE (col1,col2,col3) NOT IN (val1,val2,val3), (val4,val5,val6)
Run Code Online (Sandbox Code Playgroud)
如您所见,我想匹配值集,而不是值本身.
思考?
对于给定的重复"external_id",我想删除除一行之外的所有行.下面的查询大约需要两分钟来运行我的5,000,000行表,我觉得必须有更快的方法来执行此任务."id"是主键,"external_id"是btree索引列:
delete from posts p1 using (select distinct on (1)
external_id, id
from posts
order by 1 desc, 2 desc) p_recent
where p1.external_id = p_recent.external_id
and p1.id != p_recent.id;
Run Code Online (Sandbox Code Playgroud)
如何提高此查询的性能?
编辑:下面的查询计划:
Delete on posts p1 (cost=2322413.28..2673548.11 rows=5583248 width=45) (actual time=148064.026..148064.026 rows=0 loops=1)
-> Hash Join (cost=2322413.28..2673548.11 rows=5583248 width=45) (actual time=148064.025..148064.025 rows=0 loops=1)
Hash Cond: ((p_recent.external_id)::text = (p1.external_id)::text)
Join Filter: (p1.id <> p_recent.id)
-> Subquery Scan on p_recent (cost=1565918.17..1649666.91 rows=5583249 width=54) (actual time=80975.573..98202.920 rows=5947083 loops=1)
-> Unique (cost=1565918.17..1593834.42 rows=5583249 width=15) (actual …Run Code Online (Sandbox Code Playgroud) 我想获取已删除多少记录的行数。下面的查询返回将受影响的记录数,但是
SELECT COUNT(*) FROM suppliers
WHERE EXISTS
( SELECT customers.customer_name
FROM customers
WHERE customers.customer_id = suppliers.supplier_id
AND customer_id > 25 );
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西,在删除行之后,我可以在前端显示已删除的记录数。
SELECT COUNT(*) FROM suppliers(
DELETE from supplier(
WHERE EXISTS
( SELECT customers.customer_name
FROM customers
WHERE customers.customer_id = suppliers.supplier_id
AND customer_id > 25 ));
Run Code Online (Sandbox Code Playgroud)
我不想运行查询两次,一次查询要删除的记录数,如果大于0,则运行第二次查询删除记录。
我尝试计算DELETE命令后将删除多少条记录:
SELECT COUNT(*) FROM BOXES
WHERE EXISTS (
DELETE FROM BOXES WHERE product='25043620' AND Order='0846'
)
Run Code Online (Sandbox Code Playgroud)
我在删除附近遇到语法错误,但我无法弄清楚它是哪一个.
我想删除特定列上具有最高值的行
(我知道有答案,但由于某些原因它们都不适用于我)
我在Visual Studio c#中使用SQL进行的所有编码
我的数据库:小时
Hours_Left | Hours_Spent | Time_Written | Mode | Time_Start | Time_End | Index
==============================================================================
aa | bb | cc | dd | ee | ff | 3
gg | hh | ii | jj | kk | ll | 4
mm | nn | oo | pp | qq | rr | 5
ss | tt | uu | vv | ww | xx | 6
[Hours_Left] VARCHAR (MAX) NULL,
[Hours_Spent] VARCHAR (MAX) NULL, …Run Code Online (Sandbox Code Playgroud) sql-delete ×10
sql ×7
mysql ×4
sql-server ×2
sqlite ×2
c# ×1
java ×1
join ×1
notin ×1
optimization ×1
oracle ×1
php ×1
postgresql ×1
rowcount ×1