极慢的搜索页面加载(MySQL和PHP)

mus*_*sme 3 php mysql performance search

我在页面上创建了一个简单的搜索框,用户可以使用PHP键入关键字以查找某些项目的照片.我正在使用MySQL数据库.我修剪结果并仅显示10以使加载更快,但是某些关键字组导致浏览器在IE和Firefox上都挂起.当这种情况发生在IE上时,我可以在10个结果之外看到照片的轮廓(只是轮廓),右上角有一个"X"标记,类似于加载照片时,网页上不存在照片,即使我编写代码只显示10个结果.该数据库有超过10,000个条目,我想也许它正试图在数据库中显示整个照片集.这是我正在使用的一些代码.

我正在使用下面的函数来创建查询.$ keyword是用户输入的关键字数组.

function create_multiword_query($keywords) {
// Creates multi-word text search query
$q = 'SELECT * FROM catalog WHERE ';
$num  = 0;
foreach($keywords as $val) {    // Multi-word search
    $num++;
    if ($num == 1) {
        $q = $q . "name LIKE  '%$val%'"; }
    else {
        $q = $q . " AND name LIKE  '%$val%'";}
} 
$q = $q . ' ORDER BY name';
return $q;
//$q = "SELECT * FROM catalog WHERE name LIKE \"%$trimmed%\" ORDER BY name";
}
Run Code Online (Sandbox Code Playgroud)

并显示结果.MAX_DISPLAY_NUM是10.

$num = 0;
while (($row = mysqli_fetch_assoc($r)) && ($num  < MAX_DISPLAY_NUM)) {  // add max search result!
    $num++;
    print_images($row['img_url'], '/_', '.jpg');    // just prints photos               
}
Run Code Online (Sandbox Code Playgroud)

我是PHP的新手,但我似乎无法发现我的代码有任何问题.也许我编写这些算法的方式不适合PHP或MySQL?你能帮助我吗?我可以根据需要发布更多代码.TIA!

Mat*_*Mat 5

不要在PHP中限制搜索结果,请使用LIMIT关键字在SQL查询中限制它们.

如:

select * form yourtable where ... order by ... limit 10;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,那些LIKE '%something%'可能很贵.也许你应该看看全文索引和搜索.

如果你想显示一个More...链接或类似的东西,一种方法是limit你的查询到11,只显示前十.