NotORM 的连接与多选

Posted

技术标签:

【中文标题】NotORM 的连接与多选【英文标题】:NotORM's join vs multiple selects 【发布时间】:2012-10-04 06:12:46 【问题描述】:

我正在查看这个名为 NotORM 的 php DB 库,在阅读了它的文档后,我了解到它对连接的立场。争论基本上是单个 SQL 查询的性能与连接与使用多个选择查询然后交叉引用 DB 抽象层中的结果。

我一直都知道单个查询应该总是比使用多个查询更好,所以 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');

第二种方法真的实用吗?

【问题讨论】:

JOIN queries vs multiple queries的可能重复 【参考方案1】:

我希望单个查询会快一些。但是将取决于 php 和 mysql 之间的通信。当我尝试对其进行基准测试时,仅进行查询(无论多么简单)都会产生明显的开销。

但是,如果查询变得过于复杂,您就会遇到难以维护的问题。

如果您尝试使用任何自定义过程,则会出现另一点。例如,我需要根据 Levenshtein 距离(即单词的相似程度)进行一些处理。我为此找到的 MySQL 函数比使用 PHPs Levenshtein 函数检索数据和处理要慢得多。

【讨论】:

以上是关于NotORM 的连接与多选的主要内容,如果未能解决你的问题,请参考以下文章

单选与多选与label

SQLiteOpenHelper 单连接与多连接

iOS 选择题之TableView单选与多选的处理

iOS 之几个 button 的单选与多选

Html+JavaScript实现表格(table)单选与多选

关于el-select 单选与多选切换的时候报错的解决办法