PHP in_array与MySQL SELECT

时间:2010-08-16 12:32:07

标签: php mysql arrays

我需要检查我的数据库中是否已存在某个整数值(它一直在增长)。它应该在一个脚本中完成几千次。我正在考虑两种选择:

  1. 将MySQL数据库中的所有数字读入PHP数组,每次需要检查时,请使用in_array函数。
  2. 每次我需要检查数字时,只需执行SELECT number FROM table WHERE number ='#'LIMIT 1
  3. 之类的操作

    一方面,搜索存储在RAM中的数组应该比每次查询mysql更快(正如我所提到的,这些检查在一次脚本执行期间执行了大约一千次)。另一方面,数据库正在增长,这个阵列可能变得非常大,这可能会减慢速度。

    问题是 - 其他方面哪种方式更快或更好?

4 个答案:

答案 0 :(得分:1)

我必须同意#2是你最好的选择。使用LIMIT 1执行查询时,MySQL会在找到第一个匹配项时停止查询。确保您要搜索的列已编入索引。

答案 1 :(得分:1)

听起来你正在复制代码中的唯一约束......

CREATE TABLE MyTable(
SomeUniqueValue    INT NOT NULL
CONSTRAINT MyUniqueKey UNIQUE (SomeUniqueValue));

答案 2 :(得分:0)

您需要检查的次数与数据库中存储的值的数量相比如何?如果它是1:100那么你最好每次在数据库中搜索,如果它(少量)少,那么预加载列表会更快。测试时发生了什么?

然而,即使该比率足够低,以便能够更快地加载整个表格,这也会吞噬内存,因此可能会使其他所有内容运行得更慢。

所以我建议不要将它全部加载到内存中。但是,如果可以,则批量检查以最小化到数据库的往返次数。

下进行。

答案 3 :(得分:0)

查询数据库是最好的选择,因为你说数据库正在增长,这意味着新的值被添加到表中,in_array中你将读取旧的值。其次,你可能会耗费大量数据分配给PHP的RAM。第三,mysql有自己的查询优化器和其他优化,与php相比,它是一个更好的选择