【发布时间】:2016-04-03 14:16:14
【问题描述】:
所以我有一个超过 2000 万行的数据库,我需要一个搜索功能。 所以我有一个 PDO 代码要搜索,当搜索到的用户名在数据库中时,它不是很快但很好,大约 0.9 秒。但是当搜索到的用户名不在数据库中时,需要超过 10 秒。
这是我的代码:
$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 上搜索了这个,我只能找到像 sphinx 这样的东西,这对我来说是不可能的,因为我在共享主机上(namecheap)
谁能帮帮我?谢谢。
【问题讨论】:
-
你有用户名列的索引吗?
-
@kylek 我不太擅长 sql 或那样的事情,我认为我没有索引。我该如何添加它,它只需要在搜索的列(用户名)上还是全部?