PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使此SQL查询更有效?的PHP大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个系统,用户可以查看自己单独订阅的类别,以及@L_696_4@认情况下在其所属区域中可用的类别.

因此,这些表如下所示:
分类目录
用户类别
地区类别

我正在查询数据库中区域内的所有类别,以及它们已订阅的所有单个类别.

我的查询如下:

        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,请注明来意。
标签: