【发布时间】:2021-07-21 14:18:54
【问题描述】:
目前我正在使用 union 与我的原始查询来获取总计数,以便查询的过滤器也可以应用于计数。 目前我的查询结构是:
SELECT
*
FROM
(SELECT
MUI.USERNAME,MUI.NAME,MUI.STATUS,MUI.BILLING_TYPE,MUI.BILLING_SUBTYPE,MSU.USER_NAME AS SELLER_USERNAME,MUA.ADDRESS,MUCN.CONTACT_NUMBER,MUI.CNIC,
CASE
WHEN MUI.BILLING_SUBTYPE = 'VAR' THEN 'Variable'
WHEN MUI.BILLING_SUBTYPE = 'DATE' THEN 'Fixed'
ELSE MUI.BILLING_SUBTYPE
END AS BILLING_TYPE_READABLE
FROM
USER_INFO MUI
LEFT JOIN SYSTEM_ENTITY MSE ON MSE.ID = MUI.SELLER_ID
LEFT JOIN SYSTEM_USER MSU ON MSE.ID = MSU.ENTITY_ID
LEFT JOIN USER_CONTACT_NUMBER MUCN ON MUCN.ACCOUNT_ID_FK = MUI.ACCOUNT_ID AND MUCN.CONTACT_TYPE = 'PRIMARY'
LEFT JOIN USER_ADDRESS MUA ON MUA.ACCOUNT_ID_FK = MUI.ACCOUNT_ID
WHERE
MUI.SELLER_ID IN (1)
AND MUI.STATUS <> 'Terminated'
GROUP BY MUI.USERNAME UNION SELECT
'TOTAL_COUNT',FOUND_ROWS(),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL) TEMP
ORDER BY CASE
WHEN USERNAME = 'TOTAL_COUNT' THEN 0
ELSE 1
END , USERNAME
LIMIT 101 OFFSET 0;
这对我来说很好,但需要太多时间,因为我的 API 在执行期间会抛出超时错误。有没有更好的办法来处理这种情况?
我不希望表中的总行数,我想获取将由上述查询返回的行数,没有限制
【问题讨论】:
标签: mysql pagination