У меня есть таблица «items» и таблица «itemkeywords».
Когда пользователь ищет ключевое слово, я хочу дать ему одну страницу результатов плюс общее количество результатов.
Что я сейчас делаю (для пользователя, который ищет "a b c":
SELECT DISTINCT {fields I want} FROM itemkeywords JOIN items
WHERE (keyword = 'a' or keyword='b' or keyword='c'
ORDER BY "my magic criteria"
LIMIT 20.10
и затем я делаю тот же запрос со счетом
SELECT COUNT(*) FROM itemkeywords JOIN items
WHERE (keyword = 'a' or keyword='b' or keyword='c'
Это может привести к получению довольно большой таблицы, и я считаю, что это решение ужасно хреново ...
Но я не могу придумать ничего лучше.
Очевидная альтернатива - избегать двойного нажатия на MySQL, который выполняет только первый запрос без предложения LIMIT, а затем переходит к правильной записи, чтобы показать соответствующую страницу, а затем к концу набора записей, чтобы подсчитать результат кажется еще хуже ...
Есть идеи?
ПРИМЕЧАНИЕ: я использую ASP.Net и MySQL, а не PHP