gpt4 book ai didi

mysql - 我该怎么做才能加快这个缓慢的查询?

转载 作者:行者123 更新时间:2023-11-29 07:07:00 25 4
gpt4 key购买 nike

在我的 CakePHP 1.3 应用程序上有一个产品页面。此页面显示当前产品和 2 个相关产品。

在Product Model上根据这个函数找到相关的产品:

public function related($id, $limit = 2)
{
$item = $this->find('first',array(
'fields'=>array('Product.style_number','Product.brand'),
'conditions'=>array('Product.id'=>$id),
'recursive'=>0,
));

$data = $this->find('all',array(
'fields'=>array('Product.id','Product.name','Product.image','Product.url','levenshtein(Product.style_number,"'.$item['Product']['style_number'].'") as dist'),
'limit'=>$limit,
'conditions'=>array('NOT'=>array('Product.id'=>$id),'Product.brand'=>$item['Product']['brand']),
'order'=>'dist',
));

return $data;
}

此函数根据编辑距离查找样式编号最接近的产品。在查询中,levenshtein() 是用户定义的 MySQL 函数,您可以 view source here

当我在一个大约有 100 行的表上测试它时,它相当快。但是,我的 Product 表目前有 10K 行并且还在增长。

我尝试添加 'Product.brand'=>$item['Product']['brand'] 来限制它操作的行数,我还制作了 Product.style_number 希望加快速度的索引。

它仍然很慢,在加载页面时会导致大约 2-3 秒的延迟。

我该怎么做才能加快速度?有没有办法缓存它..如果是的话如何?

是否有其他方法可以更快地获取相同的数据?

我有哪些选择?

不过,我得到的结果非常准确,它找到了最接近的相关产品。

最佳答案

听起来这对于 AJAX 工作流来说是一个很好的应用程序。如果距离计算花费了大部分时间(特别是如果它不是页面的主要部分),那么您应该能够通过单独运行该查询来实现显着的加速。

关于mysql - 我该怎么做才能加快这个缓慢的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6752370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com