|
|
|
Ускорить подсчет записей.
|
|||
|---|---|---|---|
|
#18+
У меня похожий вопрос. Никак не могу придумать, в интернете тоже не нашел. Может что неправильно делаю? Задача такая: нужно подсчитать приблизительное кол-во строк в сложной выборке (с множеством join'ов, условий, и записей), но при этом подсчет должен происходить не дольше 1 сек. Проблема именно в подсчете, основной запрос выполняется быстро. Количество записей в modx_site_content порядка 1+млн, а в product_tmplvar_contentvalues порядка 10+млн. В выборку попадает в среднем 150-200к товаров из таблицы `modx_site_content`, соответственно с добавлением такого же кол-ва для каждого `product_tmplvar_contentvalues`. Запрос: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Explain см. приложение Запрос занимает 5 сек. И это самый простой вариант. Если количество JOIN'ов увеличивается(а их может быть порядка 20), то время подсчета увеличивается до 2+ мин. Структура таблиц Как можно ускорить запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 06:10:42 |
|
||
|
Ускорить подсчет записей.
|
|||
|---|---|---|---|
|
#18+
supermike, тебе надо подсчитать количество в конечном результате? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 14:53:10 |
|
||
|
Ускорить подсчет записей.
|
|||
|---|---|---|---|
|
#18+
В общем пошел другим путем. COUNT не воспринимает LIMIT, как здесь советовали, в итоге запрос идет по всем записям из-за чего, как я понял, и получается эта задержка в 5+ сек. Так что я делаю SELECT 1 ограничивая LIMIT 100 и тем самым получаю результат за 0.00.. сек, и подсчитываю кол-во строк в выводе с помощью mysql->num_rows(). А в необходимом месте пишу: "найдено более 100 позиций.". Просто интересно было как это делают другие разработчики. Сама идея вот в чем: имеется товар с набором возможных конфигураций(цвет, размер...). Человек в фильтре выбирает необходимые парамтеры, в процессе выбора, как на яндексе, ему отображается кол-во товаров после фильтрации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 14:55:51 |
|
||
|
Ускорить подсчет записей.
|
|||
|---|---|---|---|
|
#18+
supermikeLIMIT 100supermikeпишу: "найдено более 100 позиций."Тогда надо LIMIT 101, чтобы слово "более" было честным. Я делаю аналогично в одном поиске, где поиск очень тяжелый, а пользователь может задать такое условие, что в результат пойдут десятки-сотни тысяч записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2015, 16:40:32 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39121341&tid=1832410]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 288ms |

| 0 / 0 |
