【问题标题】:mysql efficiency of using 'WHERE id IN (list of IDs)'使用'WHERE id IN(ID列表)'的mysql效率
【发布时间】:2021-03-22 16:00:34
【问题描述】:

我编写了一些脚本来获取与 ID 列表匹配的所有记录。它工作得很好:

select * from invoices where iOpen=1; // 收集未结发票

公司在任何时候都可以有 1 或 20 多张未结发票。使用php,遍历结果收集一次companyID,然后使用companyID列表抓取其他企业数据:

select ct.*,bs.* from clientTable ct, billSettings bs where ct.cID=bs.cID AND ct.cID IN (companyIDs);

当 LIST(companyIDs)的长度为 5 到 10 个项目时,它没有问题....但是当该列表增长到 100 个 ID 或 500 个 ID 或更多时会发生什么?从技术上讲,它仍然只是对数据库的一次调用,而不是迭代一个会击中数据库 100 或 500 次的循环。但是单次调用本身在什么时候会变得低效呢?

是否有其他方法可以更有效地获取相同的数据?

【问题讨论】:

  • 你是如何获得 id 列表的?
  • @ysth - 我确定你的问题是相关的,但是我附加了我的问题。

标签: mysql sql select


【解决方案1】:

实际上,MySQL 在优化这一点方面非常做得很好。它实际上对值进行排序并对值进行二进制搜索。

这在其他数据库中并不常见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2011-01-27
    相关资源
    最近更新 更多