最近,我一直在使用FROM子句来启用我的过滤器,例如:
SELECT *
FROM (SELECT ? as userid, ? as timestamp) param
JOIN session_member a ON a.sessMemeberId = userid
JOIN session b ON b.sessId = a.sessId AND b.status = 'open'
JOIN session_content c ON c.sessId = a.sessId AND c.sessTimestamp > timestamp
而不是
SELECT *
FROM session
JOIN session_member USING (sessId)
JOIN session_content USING (sessId)
WHERE
status = 'open' AND
sessMemberId = ? AND
sessTimestamp > ?
原因是,通过使用第一种方法,我希望内存使用尽可能少,因为行计数将提前过滤,甚至在加入另一个相关表之前。
我的问题是,这是真的吗?因为我从未在网上听过这样的做法,而且我无法做基准测试,因为我从不处理能够清楚显示性能差异的大型数据库。