php – 在MySQL中编写子查询是一个好习惯吗?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 在MySQL中编写子查询是一个好习惯吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写以下子查询以用于某些项目特定目的:

SELECT count(*) From table1 
WHERE userB='$p' AND userA IN 
  (SELECT userB From table1 
   WHERE userA='$row[username]')

我很好奇这是用PHP做的最好的做法还是我应该采用传统方式首先得到子查询结果然后计算记录?

解决方法

SQL查询保留在PHP或存储过程圣战中,最少的@L_512_6@访问是最佳实践.有时间到数据库&无法恢复的后退,并且分离查询会在查询之间存在数据更改的风险.

查询本身可以优化吗?在这个例子中,可能是的:

SELECT COUNT(*) 
  FROM TABLE t
  JOIN TABLE t2 ON t2.userB = t.userA
               AND t2.userA = '$row[username]'
 WHERE t.userB = '$p'

如果您真的想确定查询性能,那么您必须熟悉生成解释计划&解释输出调整查询.

什么是解释计划?

MysqL解释计划显示了MySQL查询优化器如何决定运行SELECT语句以便最好地访问已请求的数据.

如何生成解释计划?

MysqL中,您只需在SELECT关键字之前将关键字explain添加到SELECT查询中. IE:

EXPLAIN SELECT COUNT(*)
          FROM TABLE t
          JOIN TABLE t2 ON t2.userB = t.userA
                       AND t2.userA = '$row[username]'
         WHERE t.userB = '$p'

可能应该早些提到过这个,但是你不想PHP中运行它,因为它不会返回你查询内容.使用任何sql IDE,如PHPMyAdmin / etc.

我有我的解释计划,但它意味着什么?!

MySQL EXPLAIN documentation一个阅读每个返回列的好地方,&列代表什么.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 在MySQL中编写子查询是一个好习惯吗?全部内容,希望文章能够帮你解决php – 在MySQL中编写子查询是一个好习惯吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。