我正在为某个项目编写以下子查询:
SELECT count(*) from table1
WHERE userB='$p' AND userA IN
(SELECT userB FROM table1
WHERE userA='$row[username]')
我很好奇这是否是在PHP中执行此操作的最佳实践,或者我是否应该采用传统方式先获取子查询结果,然后再计算记录数?
我正在为某个项目编写以下子查询:
SELECT count(*) from table1
WHERE userB='$p' AND userA IN
(SELECT userB FROM table1
WHERE userA='$row[username]')
我很好奇这是否是在PHP中执行此操作的最佳实践,或者我是否应该采用传统方式先获取子查询结果,然后再计算记录数?
SELECT COUNT(*)
FROM TABLE t
JOIN TABLE t2 ON t2.userB = t.userA
AND t2.userA = '$row[username]'
WHERE t.userB = '$p'
EXPLAIN SELECT COUNT(*)
FROM TABLE t
JOIN TABLE t2 ON t2.userB = t.userA
AND t2.userA = '$row[username]'
WHERE t.userB = '$p'
可能应该早点提到,但您不想从PHP中运行此内容,因为它不会返回您查询的内容。请使用任何SQL IDE,例如PHPMyAdmin /等等。
MySQL EXPLAIN文档是阅读每个返回列及其所代表的内容的好地方。
我同意Ted的观点,左连接会更快,而且更易于阅读。 此外,不要使用count(*),而是使用count(id)