大佬教程收集整理的这篇文章主要介绍了如何使此SQL查询更有效?的PHP,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个系统,用户可以查看自己单独订阅的类别,以及默认情况下在其所属区域中可用的类别.
我正在查询数据库中区域内的所有类别,以及它们已订阅的所有单个类别.
我的查询如下:
SELEct * FROM (categories C)
LEFT JOIN users_categories uc on uc.category_id = c.id
LEFT JOIN regions_categories rc on rc.category_id = c.id
WHERE (rc.region_id = ? OR uc.user_id = ?)
至少我相信这是查询,我正在使用Cake的ORM层创建它,因此确切的一个是:
$conditions = array(
array( "OR" => array (
'RegionsCategories.region_id' => $region_id,
'UsersCategories.user_id' => $user_id
)
));
$this->find('all', $conditions);
事实证明这非常慢(有时大约20秒左右.每个表大约有5,000行).我的设计有问题吗?
如何在一次查询中检索用户的个人类别和其区域内的类别,而又不花费时间?
谢谢!
解决方法:
确保category.id,users_categories.category_id,users_categories.user_id,regions_categories.category_id和regions_categories.region_id列均已索引.
以上是大佬教程为你收集整理的如何使此SQL查询更有效?的PHP全部内容,希望文章能够帮你解决如何使此SQL查询更有效?的PHP所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。