我需要检查我的数据库中是否已存在某个整数值(它一直在增长)。它应该在一个脚本中完成几千次。我正在考虑两种选择:
一方面,搜索存储在RAM中的数组应该比每次查询mysql更快(正如我所提到的,这些检查在一次脚本执行期间执行了大约一千次)。另一方面,数据库正在增长,这个阵列可能变得非常大,这可能会减慢速度。
问题是 - 其他方面哪种方式更快或更好?
答案 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相比,它是一个更好的选择