我正在分析一个相当糟糕的遗留数据库/代码库,试图通过将查询组合到连接中来减少服务器负载(包括通常调用超过一百万个单独查询的电子邮件警报 cron 作业)。
SELECT * FROM
class_alerts_holding ah
INNER JOIN class_listings l ON l.id = ah.lid
INNER JOIN class_users u ON u.id = ah.uid
LEFT JOIN class_prodimages pi ON pi.pid = ah.lid
这会吐出 120 列...
aid | id | lid | uid | oid | catName | searchtext | alertfreq | listType | id | owner | title | section | shortDescription | description | featured | price | display | hitcount | dateadded | expiration | url | notified | searchcount | repliedcount | pBold | pHighlighted | notes | ...
为了帮助我分析如何构建新查询,如果我可以在结果中的列前面加上它们在 JOIN 中来自的表,那就太棒了。
class_alerts_holding.aid | class_alerts_holding.id | class_listings.lid | ...
有没有办法做到这一点?
最佳答案
你可以
select ah.*, l.*, u.*, pi.* from ...
那么这些列将至少按表排序返回。
为了更好地区分每两组列,您还可以像这样添加“分隔符”列:
select ah.*, ':', l.*, ':', u.*, ':', pi.* from ...
(已编辑以删除不必要的显式别名,请参阅评论。)
关于mysql - 在连接中,如何在所有列名前加上它来自的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13153344/