【发布时间】:2017-01-30 18:59:15
【问题描述】:
我想知道,为什么使用 IN-Operator 的查询比简单的 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 是一个非常大的表,包含超过 7.000.000 行,但 VIDEO_ID 已编入索引,因此在 WHERE 子句中使用 VIDEO_ID 的查询足够快。
IN-Operator 是如何工作的?我猜这只是几个WHERE 子句的简短形式。
我在 XAMPP 上使用 MariaDB 10.1.16
【问题讨论】:
-
也许这个可以帮到你:stackoverflow.com/a/14194444/1050927
-
解释说明了什么
-
速度很慢,因为您正在执行相关子查询。请注意,您从未提供过分析模式。对于任何相关表,这将通过
show create table xyz完成。你也没有给Query1。所以这不是很有帮助