Php 将3个MYSQL查询优化为1个
我的页面每天有30多个IO视图,我无法缓存页面(数据必须始终是最新的) 我想总结三个MYSQL查询。 这可能吗Php 将3个MYSQL查询优化为1个,php,mysql,sql,inner-join,Php,Mysql,Sql,Inner Join,我的页面每天有30多个IO视图,我无法缓存页面(数据必须始终是最新的) 我想总结三个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_
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
很高兴有任何帮助单个查询返回单个数据集。通过查看三个查询,您似乎需要三个数据集。通过测量查询无法实现相同的功能。因此,除非您更改了需求,否则它的外观应该可以。或者,您可以查看MySQL的内部缓存。//试试这个
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
如果您试图查找硬币的前30名排名表数据以及meta_控股、meta_观察列表详细信息,请点击此处查询-
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
对我来说,可能的副本看起来不像是那个的副本。相反,每天查看3000万次点击平均为350次点击/秒,当然您可以缓存1秒,将唯一点击减少到85K#1054-where子句中的未知列“holdings.userId”