2012-10-13 34 views
4

我在看这个名为NotORM的PHP数据库库,在阅读它的文档后,我已阅读了它在连接上的立场。该参数基本上是一个带有连接的单个SQL查询与使用多个select查询并在数据库抽象层中交叉引用结果的性能。NotORM的连接vs多选

我一直都知道单个查询应该总是比使用多个查询更好,所以NotORM的想法对我来说是新的。我也不确定,因为只有在NotORM中我看到了这个“功能”。

我想问问大家你对此的看法。

哪个查询更好更快?

这...

SELECT application.*, tag.* 
    FROM application 
    LEFT JOIN application_tag ON application.id = application_tag.application_id 
    LEFT JOIN tag ON application_tag.tag_id = tag.id 
    ORDER BY application.id 

与...

SELECT * FROM application LIMIT 4; 
SELECT * FROM application_tag WHERE application_id IN ('1', '2', '3', '4'); 
SELECT * FROM tag WHERE id IN ('21', '22', '23', '24'); 

这是第二种方法真的实用?

+1

[JOIN查询vs多个查询]的可能重复(http://stackoverflow.com/questions/1067016/join-queries-vs-multiple-queries) – arvixx

回答

1

我期望单个查询要快得多。不过将取决于php和MySQL之间的通信。当我试图对其进行基准测试时,仅仅为了查询而产生了明显的开销(不过很简单)。

但是,如果查询变得太复杂,那么就会遇到难以维护的事情。

如果您尝试使用任何自定义过程,还有一点值得注意。例如,我需要根据Levenshtein距离(即相似的单词是如何)进行一些处理。我发现的MySQL函数的FAR比检索数据和使用PHP Levenshtein函数处理更慢。