微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我在页面上创建了一个简单的搜索框,用户可以使用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";
}

显示结果. 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               
}

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

解决方法:

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

如:

select * form yourtable where ... order by ... limit 10;

顺便说一句,那些像’%的东西’可能是昂贵的.也许你应该看看Full text indexing and searching.

如果你想显示更多…链接或类似的东西,一种方法是将你的查询限制为11,只显示前十.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐