|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Есть запрос: select field1, field2, field3 from table1 where ... limit 0, 100 Проблема в том, что запрос выполняется ~15 секунд, но хочется пользователю вывести общее кол-во записей, не выполняя запрос два раза. Можно конечно сначала выполнить запрос "select count(*) ...", но так как он выполняется достаточно долго этого делать не хотелось бы :(. Программирую на PHP, может кто что-то подобное делал? Подскажите, плиз... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2003, 17:47 |
|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Думаю я, что проблема в индексах - должен отрабатывать быстро! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2003, 17:52 |
|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Да, индекс по полю поиска не стоит, да и его сделать не реально, т.к. все записи разные, да и еще поиск происходит с использованием like '%...%'. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2003, 17:59 |
|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Может есть смыслвывести кол-во уже после вывода всех записей... А так иногда делают сл. модель! Выбирают во временную таблицу поле уникального индекса. Считают их кол-во потом выбирают уже остальные поля, опять-же опираясь на уже отобранные ID! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2003, 18:06 |
|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Суть понял, но это же MySQL, который не поддерживает вложенные запросы, как выбрать по ключу находящемуся во второй таблице, причем общее количество отобранных записей может превышать 3000 ? Потом все пользователи работают по одним акаунтом, появится геморрой с уникальностью имени временной таблицы! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2003, 18:30 |
|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Временная таблица создается исключительно для конкретного соединения... Начиная с MySQL 3.23 при создании таблицы можно использовать ключевое слово TEMPORARY. Временная таблица автоматически удаляется по завершении соединения, а ее имя действительно только в течение данного соединения. Со вторым ключом щас подумаю... mahoune ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2003, 09:50 |
|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Да знаю я, повторяю, для тех кто в танке: MySQL не поддерживает вложенных запросов, как на основании полученной таблицы ключей выцепить необходимые данные из главной? Если удасться выцепить, как добиться уникальности таблицы, если с ней работает куча пользователей с одним логином, и к томуже есть ссылки следующие 20 записей, предыдущие 20 записей? Есть ли другой способ определить общее кол-во записей в исходном запросе содержащим LIMIT? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2003, 13:53 |
|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Да не кипятись ты! MySQL не поддерживает вложенных запросов, как на основании полученной таблицы ключей выцепить необходимые данные из главной? Код: plaintext 1. 2. 3. 4. 5. 6.
Если удасться выцепить, как добиться уникальности таблицы, если с ней работает куча пользователей с одним логином, и к томуже есть ссылки следующие 20 записей, предыдущие 20 записей? Как видно из моего поста, имя временной таблицы действительно в данном соединении. Если 10 человек заходят под одним логином получаем 10 соединений. Механизм следующие 20 и предыдущие 20 реализуются через временную таблицу, смотри поле row_no Есть ли другой способ определить общее кол-во записей в исходном запросе содержащим LIMIT? Поищи тут этот текст SQL_CALC_FOUND_ROWS ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2003, 17:01 |
|
Общее кол-во записей с опцией LIMIT
|
|||
---|---|---|---|
#18+
Спасибо, все получилось. Извини протупил с пунктом №2 - забыл, что таблицы перемножать можно... А больше всего понравился пункт №3, вот пример его использования: Код: plaintext 1. 2. 3.
Последний оператор показывает количество найденных строк :) Еще раз, огромное спасибо... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2003, 18:00 |
|
|
start [/forum/topic.php?fid=47&fpage=707&tid=1855998]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 270ms |
total: | 440ms |
0 / 0 |