jnb*_*bdz 0 mysql sql performance
这是我的查询:
SELECT COUNT(a.rating_id), COUNT(b.rating_id), COUNT(c.rating_id)
FROM wp_ratings a
LEFT JOIN wp_ratings b
LEFT JOIN wp_ratings c
WHERE a.rating_rating <= '5' AND a.rating_rating >= '4'
AND b.rating_rating <= '4' AND b.rating_rating >= '3'
AND c.rating_rating <= '3' AND c.rating_rating >= '0'
Run Code Online (Sandbox Code Playgroud)
我收到了一个错误.我认为我的查询非常自我解释.我只是不想这样做:
SELECT COUNT(*) FROM wp_ratings WHERE rating_rating <= ‘5' AND rating_rating >= ‘4'
SELECT COUNT(*) FROM wp_ratings WHERE rating_rating <= ‘4' AND rating_rating >= ‘3'
SELECT COUNT(*) FROM wp_ratings WHERE rating_rating <= ‘3' AND rating_rating >= ‘0’
Run Code Online (Sandbox Code Playgroud)
我试图获得尽可能快的查询.
那么有没有办法利用MySQL将多个查询合并到同一个表中以获得自己行中的不同结果?
UPDATE
当我做EXPLAIN时,我看到MySQL扫描表3次,该表有15 000行,因此乘以15 000,你得到45 000行扫描.如果可能的话,我想把它降到15 000.
SELECT
SUM(IF(rating_rating <= 5 AND rating_rating >= 4, 1, 0)),
SUM(IF(rating_rating <= 4 AND rating_rating >= 3, 1, 0)),
SUM(IF(rating_rating <= 3 AND rating_rating >= 0, 1, 0))
FROM wp_ratings
Run Code Online (Sandbox Code Playgroud)
只需使用SUM而不是COUNT多次.然后,您只能"计算"您想要计算的数量.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |