加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 为什么我的MySQL连接速度慢?

发布时间:2020-12-13 17:26:49 所属栏目:PHP教程 来源:网络整理
导读:我有一个连接表的查询.这是select语句: SELECT *,A.id AS id,A.username AS username,G.desc AS customer_desc,H.id AS counter,SUM( F.amount_paid ) FROM tblcheckin AS ALEFT OUTER JOIN tblrate AS B ON B.id = A.rate_idLEFT OUTER JOIN tblrefaccom_t
我有一个连接表的查询.这是select语句:

SELECT *,A.id AS id,A.username AS username,G.desc AS customer_desc,H.id AS counter,SUM( F.amount_paid ) 
FROM tblcheckin AS A
LEFT OUTER JOIN tblrate AS B ON B.id = A.rate_id
LEFT OUTER JOIN tblrefaccom_type AS C ON C.id = A.id
LEFT OUTER JOIN tblcust_bill AS D ON D.check_in_id = A.id
LEFT OUTER JOIN tblroom AS E ON E.room_no = A.room_id
LEFT OUTER JOIN tblpayment AS F ON F.check_in_id = A.id
LEFT OUTER JOIN tblrefcust_type AS G ON G.id = A.customer_desc
LEFT OUTER JOIN tblindex AS H ON A.id = H.check_in_id
WHERE A.check_out =  "0000-00-00 00:00:00"
GROUP BY F.check_in_id
ORDER BY check_out,check_in

结果:显示0到11行(总共12行,查询占用7.4061秒)

这就是Explain SQL

这是我到目前为止所做的:
我设置optimizer_search_depth = 0,因为我认为它会像Joining many tables in mySQL中提到的那样工作.

我在这做错了什么?我感谢每一个反馈.谢谢.

UPDATE.问题解决了.我从tblpayment,tblcust_bill和tblindex向check_in_id列添加了索引.这是新的Explain SQL:

解决方法

看看你的Explain,我可以看到几个连接需要全表扫描.您可能没有A.check_out,D.check_in_id,F.check_in_id(这是基于相对行数的杀手)和H.check_in_id的索引.这意味着必须扫描整个Darn表A,D,F和H才能找到相关的行.

索引那4行,查询次数应该会猛涨.

话虽如此,我很惊讶这已经不是很快,甚至没有优化.我在每个表中都看到了几万行 – 除非这些行非常庞大(顺便说一下糟糕的做法 – 将文本/ blob和大列分解成单独的表),你应该能够得到这些结果不到7秒.更像是我期望的70毫秒.我怀疑你必须调整你的mysql服务器设置 – 使用更多ram,增加缓冲区大小等.但这些索引应该有很大帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读