我正在分析一个相当糟糕的旧数据库/代码库,试图通过将查询合并到联接中来减少服务器负载(包括电子邮件警报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 ...
那么这些列将至少按表顺序返回。
为了更好地区分每两列列,您还可以添加“ delimiter”列,如下所示:
select ah.*, ':', l.*, ':', u.*, ':', pi.* from ...
(已编辑,删除了不必要的显式别名,请参阅注释。)