Итак, у меня есть база данных из 20 мил + строк, и мне нужна функция поиска. Итак, у меня есть код PDO для поиска, и когда искомое имя пользователя находится в базе данных, оно не очень быстрое, но точное, около 0,9 секунды. Но когда искомое имя пользователя отсутствует в базе данных, оно занимает более 10 секунд.Медленный поиск PHP в базе данных
Вот мой код:
$p = $_GET["p"];
$conn = new PDO("mysql:host=localhost;dbname=x", "x", "x");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth = $conn->prepare("SELECT `id` from `dbsearch` WHERE `username` = :p LIMIT 1");
$sth->bindParam(':p', $p);
$sth->execute();
$result = $sth->fetchAll();
if($result)
{
foreach($result as $row)
{
echo $row["id"];
}
}
else {
echo "none";
}
Я искал это на StackOverflow, и я мог только найти такие вещи, как сфинкс, что невозможно для меня, так как я нахожусь на общий хостинг (Namecheap)
Кто-нибудь, кто может мне помочь? спасибо.
У вас есть индекс для столбца имени пользователя? –
@kylek Я не очень хорошо разбираюсь в sql или вещах таким образом, я не думаю, что у меня есть индекс. Как добавить это, и нужно ли это только найти искомый столбец (имя пользователя) или вообще? – wtm