php mysql频繁连接_php – 如何以频繁的插入率提高MySQL查询的性能?

我有约.表tb_post中有200K行,每5分钟就有一行. 10个新插件.

我正在使用以下查询来获取行 –

SELECT tb_post.ID, tb_post.USER_ID, tb_post.TEXT, tb_post.RATING, tb_post.CREATED_AT,

tb_user.ID, tb_user.NAME

FROM tb_post, tb_user

WHERE tb_post.USER_ID=tb_user.ID

ORDER BY tb_post.RATING DESC

LIMIT 30

以分类的方式获取所有行需要10秒以上.

以下是EXPLAIN查询的报告:

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE tb_user ALL PRIMARY NULL NULL NULL 20950 Using temporary; Using filesort

1 SIMPLE tb_post ref tb_post_FI_1 tb_post_FI_1 4 tb_user.id 4

几点投入:

> tb_post.RATING是Float类型

> tb_post.USER_ID上有索引

任何人都可以建议我如何优化此查询并提高其读取性能?

PS:我是数据库扩展问题的新手.因此,任何类型的建议都将特定于此查询.

解决方法:

您需要一个覆盖ORDER BY和WHERE子句的tb_post索引.

CREATE INDEX idx2 on tb_post (rating,user_id)

=&GT EXPLAIN SELECT的输出… ORDER BY tb_post.RATING DESC LIMIT 30

"id";"select_type";"table";"type";"possible_keys";"key";"key_len";"ref";"rows";"Extra"

"1";"SIMPLE";"tb_post";"index";NULL;"idx2";"10";NULL;"352";""

"1";"SIMPLE";"tb_user";"eq_ref";"PRIMARY";"PRIMARY";"4";"test.tb_post.USER_ID";"1";""

标签:php,mysql,scalability,performance

来源: https://codeday.me/bug/20190610/1214847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值