我读了很多,使用echo '<td><a href="editform.php?id=' . urlencode($row["CustomerID"]) . '">' . htmlspecialchars($row["CustomerID"], ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8") . '</a></td>';
是不好的,我应该使用Dependent Query
s,我有一个代码可以将很多表连接在一起,如下所示
JOIN
现在我可以使用从属查询并从SELECT a.a, b.b, c.c, d.d FROM
tablea a
JOIN tableb b ON a.id = b.id
JOIN tablec c ON a.id = c.id
JOIN tabled d ON a.id = d.id
WHERE a.id = 1
LIMIT 1
这样的另一个表中选择一个值
a.a
在这种情况下,我是否使用最简单的方式为我SELECT a.a, b.b, c.c, d.d, (SELECT e FROM tablee WHERE id = a.a) AS e FROM
tablea a
JOIN tableb b ON a.id = b.id
JOIN tablec c ON a.id = c.id
JOIN tabled d ON a.id = d.id
WHERE a.id = 1
LIMIT 1
阅读和编辑,或者我只是坚持使用Dependent Query
?
答案 0 :(得分:1)
我读了很多,使用Dependent Query很糟糕,我应该使用JOIN,
这是误导。当然,JOIN
非常强大,不应该气馁。 SQL优化器理解JOIN
,它们非常强大且易于阅读。
这并不意味着相关的子查询是错误的。例如,如果您在tablee(id, e)
上有索引,那么即使从绩效角度来看,您也可以。实际上,这可能是编写查询的最佳方式。但是,使用join
编写查询可能会生成类似的执行计划。
如果您确实使用了join
,则需要left join
来表示相同的语义。
在某些情况下,相关子查询在性能方面更好。确切的细节可能因数据库而异,因此没有规则是&#34; general&#34;跨所有数据库。
我的一条非常强烈的建议是,当您在查询中引用多个表时,可以限定所有列名称。所以,你应该写:
SELECT a.a, b.b, c.c, d.d,
(SELECT e.e FROM tablee e WHERE e.id = a.a) AS e
FROM tablea a . . .