我有一个10万行的数据库表和一个100项的数组。我需要找出是否在users表username行中找到数组项。
我的数据库表用户
| id | username | fullname |
1 John John Smith
2 Elliot Jim Elliot
3 Max Max Richard
我的阵法是这样的
[
{
string: 'Hello, this is Elliot from downtown Las Vegas!'
},
{
string: 'Hey how are you?'
}
]
我的想法是对users表中的每一行(100k条记录)执行foreach循环,并查找它是否与数组中的匹配,但速度太慢了。
foreach ($MyArray as $Array) {
foreach ($dbrows as $dbrow) {
if (strpos($Array['string'], $dbrow['username']) !== false) {
echo 'found it!';
break;
}
}
}
3条答案
按热度按时间lf5gs5x21#
我认为更好的方法是将搜索数组拆分为单词,并在查询中使用它,例如:
bxfogqkk2#
这将是一个有点击中和错过,因为你可能会发现用户与各种奇怪的名字,符合正常的话,这种方法分裂成词的输入,然后使用它们形成一个新的名称
in
子句来搜索数据库。所以它只看匹配的记录而不是所有的记录。。。它还使用准备好的语句,这是所有
$bind
以及$types
正在处理。如果你看$query
你会看到它是如何建立起来的。idfiyjo83#
可以使用正则表达式:
正则表达式分别匹配表中的数据。