这是我的问题:
这看起来效率如何?使用JOIN有优势吗?或者这是一样的吗?
$query_Recordset2 =
"SELECT cute_news.category, cute_news.id, cute_story.short, cute_story.post_id, cute_news.date, cute_news.url, cute_news.title
FROM cute_news, cute_story
WHERE cute_news.id = cute_story.post_id AND category LIKE '10%'
ORDER BY date DESC LIMIT 0,35";
答案 0 :(得分:6)
此问题可能与that one重复。
隐式JOIN不带意图,因此可读性较差。
您的查询将导致与以下内容完全相同的结果:
SELECT cute_news.category, cute_news.id, cute_story.short, cute_story.post_id, cute_news.date, cute_news.url, cute_news.title
FROM cute_news
INNER JOIN cute_story ON cute_story.post = cute_news.id
WHERE category LIKE '10%'
ORDER BY date DESC LIMIT 0,35
但后一个查询更具可读性,因为您将JOIN谓词与过滤器分开并表达查询背后的逻辑。
答案 1 :(得分:3)
“隐式连接表示法”仅列出要加入的表(在SELECT语句的FROM子句中),使用逗号分隔它们。因此,它指定了一个交叉连接,并且WHERE子句可以应用其他过滤谓词(其功能与显式表示法中的连接谓词相当)
换句话说,它是相同的
答案 2 :(得分:2)
如果你的意思是FROM
子句有多个表,逗号分隔,那么是,它基本上与INNER JOIN
相同。
然而,这是旧语法;最好使用INNER JOIN
,这是更标准的。
此外,旧语法的问题在于,通过将连接字段与WHERE
子句的其余部分组合,可能会使查询难以阅读,并且在某些情况下会导致解析器的额外工作。最好明确说明每个ON
的{{1}}子句中的关系。