如果我们有一个大约 1000-2000 个元素的数组,以及一个大约 1000-2000 个(可以增加)的 mysql 表。我们必须找到表格内容是否在数组中。
哪种方法更好?
- 从数组中获取元素并运行简单的 mysql 查询,例如
SELECT *...... WHERE.....
(运行 1-2k sql 查询) - 获取存储在 mysql 中的其他数组中的表,并与其他元素检查它的元素。即嵌套的for循环类型。(运行 1 个 sql 查询,然后进行 1-2k 条件检查)
如果我们有一个大约 1000-2000 个元素的数组,以及一个大约 1000-2000 个(可以增加)的 mysql 表。我们必须找到表格内容是否在数组中。
哪种方法更好?
SELECT *...... WHERE.....
(运行 1-2k sql 查询)与内置的 dom 解析器 DOMDocument 和 DOMXPath 相比,使用 html 简单的 dom 解析器抓取数据很慢。
搜索具有 1000 多个元素的大型 php 数组会比查询数据库要慢。
将php数组批量插入db并在sql中查询可能会更有效。批量插入需要考虑诸如表类型(MyISAM|InnoDB 等)、禁用键、大量索引等等等等。
最后,您需要进行基准测试。
显而易见的答案是:试试看。
几乎显而易见的答案是:在 php.ini 中进行查询通常比遍历数组更快。由于开销较小,一个查询比多个查询快得多。
这就是我要开始的地方:
SELECT * FROM table WHERE something IS IN ('a1', 'a2', ..., 'a1000')