将3个mysql查询优化为1个

pw9qyyiw  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(310)

我的页面每天有超过30mio的浏览量,我无法缓存页面(数据必须始终是最新的)。
我有三个mysql查询,我想总结一下。这可能吗?

SELECT * 
FROM  `meta_holdings` 
INNER JOIN coins ON coins.cmc_id = meta_holdings.cmc_id
WHERE  `userId` = $userId
LIMIT 0 , 999

SELECT * 
FROM  `meta_watchlist` 
INNER JOIN coins ON coins.cmc_id = meta_watchlist.cmc_id
WHERE  `userId` = $userId
LIMIT 0 , 999

SELECT * 
FROM  `coins` 
ORDER BY  `coins`.`rank` ASC 
LIMIT 0 , 30

很高兴有人帮忙

72qzrwbm

72qzrwbm1#

单个查询返回单个数据集。通过查看三个查询,看起来需要三个数据集。您不能通过测量查询来实现相同的功能。所以它看起来应该是好的,除非你改变了你的要求。或者,您可以查看mysql的内部缓存。

xesrikrc

xesrikrc2#

//试试这个。。

SELECT * FROM  `meta_holdings` INNER JOIN coins ON coins.cmc_id = meta_holdings.cmc_id WHERE  `userId` = $userId LIMIT 0 , 999 
UNION
SELECT * FROM  `meta_watchlist` INNER JOIN coins ON coins.cmc_id = meta_watchlist.cmc_id WHERE  `userId` = $userId LIMIT 0 , 999
UNION
SELECT * FROM  `coins` ORDER BY  `coins`.`rank` ASC LIMIT 0 , 30
mu0hgdu0

mu0hgdu03#

这是一个查询,如果你正在试图找到排名前30位的硬币表数据连同元持有,元观察名单详细信息-

SELECT * FROM  coins 
INNER JOIN meta_holdings ON coins.cmc_id = meta_holdings.cmc_id
INNER JOIN meta_watchlist ON coins.cmc_id = meta_watchlist.cmc_id
WHERE  meta_holdings.userId = $userId and meta_watchlist.userId = $userId
ORDER BY  `coins`.`rank` ASC 
LIMIT 0 , 30

相关问题