|
|
|
Нужна помощь с JOIN'ом
|
|||
|---|---|---|---|
|
#18+
Добрый день! Нужна помощь опытных людей. У меня есть несколько SQL запросов которые отлично выполняют свою работу...первый выбирает из таблицы два рандомных значения, второй в цикле подыскивает в другой таблице необходимые данные (цикл срабатывает дважды). Код: plsql 1. 2. 3. 4. 5. 6. 7. Код: plsql 1. Т.е. для полной загрузки выполняется 3 запроса. На данный момент все 3 запроса выполняются примерно за 150мс. Все бы хорошо, но за пять минут страница может быть перезагружена раз 50. И общее количество запросов сильно увеличивается. При попытке сделать все через один запрос с JOIN'ом время исполнения начало зашкаливать за 400мс, что меня совершенно не устраивает. Возможно ли имеющееся сжать до 1ого запроса не потеряв в скорости исполнения? Буду благодарен за любую помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:25:03 |
|
||
|
Нужна помощь с JOIN'ом
|
|||
|---|---|---|---|
|
#18+
free.arhey, Последний запрос идет под номером 4. Поиск того, чего нет (NOT IN) вообще вещь удивительная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:36:00 |
|
||
|
Нужна помощь с JOIN'ом
|
|||
|---|---|---|---|
|
#18+
См. самый популярный ответ http://stackoverflow.com/questions/4329396/mysql-select-10-random-rows-from-600k-rows-fast ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 22:48:28 |
|
||
|
Нужна помощь с JOIN'ом
|
|||
|---|---|---|---|
|
#18+
deblogger, первый запрос составной, а второй запрос повторяется в цикле. SELECT'ов действительно получается 5ть, но вот обращений к базе всего три. Так что вопрос не в количестве селектов, а в количестве обращений к БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 23:14:42 |
|
||
|
Нужна помощь с JOIN'ом
|
|||
|---|---|---|---|
|
#18+
deblogger, такого рода запрос я и протестировал. И как я написал уже, скорось исполнения упала раза в три и это не нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 23:16:16 |
|
||
|
Нужна помощь с JOIN'ом
|
|||
|---|---|---|---|
|
#18+
И еще важный момент в моем запросе происходит двойной рандом. Сначала выбираются два случайных rand, после чего для каждого из них подбираются строки также наугад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2013, 23:19:59 |
|
||
|
Нужна помощь с JOIN'ом
|
|||
|---|---|---|---|
|
#18+
free.arheyДобрый день! Нужна помощь опытных людей. У меня есть несколько SQL запросов которые отлично выполняют свою работу...первый выбирает из таблицы два рандомных значения, второй в цикле подыскивает в другой таблице необходимые данные (цикл срабатывает дважды). Код: plsql 1. 2. 3. 4. 5. 6. 7. Код: plsql 1. Т.е. для полной загрузки выполняется 3 запроса. На данный момент все 3 запроса выполняются примерно за 150мс. Все бы хорошо, но за пять минут страница может быть перезагружена раз 50. И общее количество запросов сильно увеличивается. При попытке сделать все через один запрос с JOIN'ом время исполнения начало зашкаливать за 400мс, что меня совершенно не устраивает. Возможно ли имеющееся сжать до 1ого запроса не потеряв в скорости исполнения? Буду благодарен за любую помощь! а пробовал заменить по типу Код: sql 1. 2. 3. 4. 5. 6. 7. 8. учитывая что у тебя две таблицы где проверяем на несовспадение - порядок их просмотра - попробовать один и обратный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 00:35:12 |
|
||
|
Нужна помощь с JOIN'ом
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, если я правильно понял предложение касается лишь ускорения not in'ов, а они то как раз работают быстро. Моя проблема в первую очередь в том что я не могу объединить никак два приведенных запроса в один, получив тот же результат и уменьшив количество обращений к БД до одного... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2013, 01:35:11 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38346923&tid=1836374]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 319ms |

| 0 / 0 |
