我想知道,为什么使用IN-Operator进行查询要比简单查询慢得多SELECT。
SELECT
让我通过一个例子来说明我的观察结果:
Query1: SELECT VIDEO_ID FROM videos (about 8000 rows with 1 column) Query2: DELETE FROM video_snapshot WHERE video_snapshot.VIDEO_ID IN (Query1)
video_snapshot是一个很大的表,具有超过700万行,但是对VIDEO_ID进行了索引,因此在- 子句中使用VIDEO_ID进行查询WHERE足够快。
WHERE
IN-Operator如何工作?我猜想这只是serveralWHERE子句的简写形式。
IN
我在XAMPP上使用MariaDB 10.1.16
对于大型数据集表IN子句,这种情况下的性能非常慢,您可以将其INNER JOIN与delete查询一起使用
INNER JOIN
DELETE video_snapshot FROM video_snapshot INNER JOIN videos ON video_snapshot.VIDEO_ID=videos.VIDEO_ID;
以我的经验,IN是一个非常慢的运算符,因为SQL通常将其评估为一系列由“ OR”(WHERE x = Y OR x = Z OR …)分隔的WHERE子句。将字段与其他表字段进行比较。