【发布时间】:2013-07-15 16:01:18
【问题描述】:
我读到SELECT ... WHERE SELECT ... 很慢,我应该改用连接。
但我不知道如何替换这段代码
SELECT Id
FROM Table1
Where
(
Data1 IS NULL
OR
(
Data2=1
AND
(SELECT 1 FROM Table2 WHERE Table2.Id=Table1.Id) IS NULL
)
)
AND
(SELECT 1 FROM Table3 WHERE Table3.Id=Table1.Id) IS NULL
有连接。
这些表的结构如下:
表1:
- ID:整数主键
- 数据1:XML
- 数据2:整数
表2:
- ID:整数
表3:
- ID:整数主键
【问题讨论】:
-
PDO 帮不了你。
-
首先查看 EXPLAIN 以查看是否存在优化器未解决的问题 - 然后您可以担心调整 - 而不是尝试遵循全局规则。
-
@Randy 我从来不明白如何使用 EXPLAIN。如果我只是在查询之前写 EXPLAIN 并在 phpliteadmin 上运行它,它只会说“0 行受影响”
-
@CL。当我运行 EXPLAIN QUERY PLAN 时,我也得到“0 行受影响”,没有结果