标签: sql-delete

SQL复制删除数百万行的查询以提高性能

这是一次冒险.我从上一个问题中的循环重复查询开始,但每个循环将覆盖所有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)

sql sql-server duplicate-data sql-delete

2
推荐指数
1
解决办法
5376
查看次数

简单的DELETE语句不起作用

我有一个表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":语法错误...

查询返回错误.

sql sqlite sql-delete

2
推荐指数
1
解决办法
6128
查看次数

单个查询中多次删除

从表1中删除WHERE Con​​ditionID =?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中)?

mysql sql multi-table-delete sql-delete

2
推荐指数
1
解决办法
7029
查看次数

查找查询删除的行数

早些时候我有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()

java mysql sql-delete

2
推荐指数
1
解决办法
3191
查看次数

大规模的sql删除查询

我必须根据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 sql optimization sql-delete

2
推荐指数
1
解决办法
111
查看次数

MySql删除NOT IN - 但比较整行

这应该相对简单.我挖了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)

如您所见,我想匹配值集,而不是值本身.

思考?

php mysql sql notin sql-delete

2
推荐指数
1
解决办法
88
查看次数

删除postgres中的重复项

对于给定的重复"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)

postgresql join sql-delete postgresql-9.3

2
推荐指数
1
解决办法
234
查看次数

获取删除的SQL记录数

我想获取已删除多少记录的行数。下面的查询返回将受影响的记录数,但是

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,则运行第二次查询删除记录。

sql oracle rowcount sql-delete

2
推荐指数
1
解决办法
2万
查看次数

在DELETE之后计算已删除的记录

我尝试计算DELETE命令后将删除多少条记录:

SELECT COUNT(*) FROM BOXES
WHERE EXISTS  ( 
    DELETE FROM BOXES WHERE product='25043620' AND Order='0846'
)
Run Code Online (Sandbox Code Playgroud)

我在删除附近遇到语法错误,但我无法弄清楚它是哪一个.

sqlite sql-delete

2
推荐指数
1
解决办法
2281
查看次数

删除具有特定列的最高值的行

我想删除特定列上具有最高值的行

(我知道有答案,但由于某些原因它们都不适用于我)

我在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)

c# sql sql-server sql-delete

2
推荐指数
1
解决办法
147
查看次数