【发布时间】:2011-09-28 01:23:02
【问题描述】:
我有以下疑问:
SELECT a.HotelID,a.Hotelname,GROUP_CONCAT(DISTINCT b.OperatorName) AS Operators
FROM hotels AS a
INNER JOIN operators AS b
ON a.HotelID = b.HotelID
GROUP BY a.HotelID
ORDER BY a.HotelID
LIMIT 100
我需要这个查询来实现简单的搜索功能。结果表应包含分页。所以我所做的是我运行这个查询(没有 LIMIT)来获取行数(我需要计算页面等等),然后我用 LIMIT 重新运行那个查询。
事实上,查询本身需要 4-5 秒(针对 300k 表,所有字段都有索引),这意味着它目前需要 10 秒来加载,因为它运行了两次。
我想知道是否有一个 SQL 语句我可以简单地使用来获取行数并且可能更快。我以为我可以使用 COUNT(a.HotelID) 但这不起作用。
【问题讨论】: