Как оптимизировать SQL-инструкции?

[Удален]
533

Сейчас на сайте работает такая схема

Один запрос делает выборку из базы SELECT .... LIMIT 10,20; выбирает 10 записей

Второй запрос SELECT count(*) определяет количество записей соответвующих запросу, для того чтобы показать их пользователю и сформировать ссылки для пролистывания данных ( Страницы :<< [1], 2, 3, 4 >> )

Как можно сделать это все одним SQL-запросов?

Ломаю голову, но пока ничего серьезного не придумал...

frantic
На сайте с 09.02.2009
Offline
27
#1
profitaklient:
Один запрос делает выборку из базы SELECT .... LIMIT 10,20

Можно увидеть целиком это чудо? И второе чудо тоже

N
На сайте с 06.05.2007
Offline
419
#2

А зачем? что плохого в двух запросах лично для вас?

Кнопка вызова админа ()
V
На сайте с 03.03.2010
Offline
2
#3

Первым запросом делаете

SELECT SQL_CALC_FOUND_ROWS column1, column2, ... columnN FROM table LIMIT 10,20

Вторым делаете

SELECT FOUND_ROWS() as count

Результатом второго запроса будет закешированное кол-во записей из запроса 1 без учета LIMIT

По сути это один запрос. Второй просто из кэша выдергивает кол-во записей.

PS. С SQL_CALC_FOUND_ROWS нужно быть аккуратнее. Бывают случаи, когда он медленнее, чем традиционный метод через SELECT... и SELECT COUNT....

pikasso
На сайте с 27.01.2008
Offline
150
#4

profitaklient, в инете просто огромное множество готовых решений, гугля вам в помощь.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий