черт, глаз замылился, "слона то я и не приметил" :(
Цитата:
- 9 отдельный запросов, в каждом из которых есть сортировка и забирание первых 6 записей.
- Те же 9 запросов, только без сортировки, в которых просто берутся первые 6 записей, объединяются юнионом, потом один раз результат сортируется
помнится, когда я последний раз с MySQL плотно общался, столкнулся с такой проблемой:
одни и теже запросы (довольно простые на небольшом объеме) выбранные непосредственно из жабы выполнялись как и положенно, т.е. практически мгновенно, а вот перенесенные в хп периодически тормозили... у меня тогда так руки до этого и не дошли (разработка остановилась на прототипе), но подозрения были именно на своп на HD, думаю, что и здесь тоже что-то похожее творится, т.к. операция на порядок сложнее (у меня то вообще одни и теже действия выполнялись) и что там сервак себе по этому поводу думает, надо отдельно разбираться
зы (из околонаучного шаманства): я бы в примере, для начала, попробывал заменить * на названия полей и убрать скобки вокруг селектов...
а вообще интересно было бы посмотреть план запроса
Цитата:
Не, я к тому, что по новому индексу актуальная статистика и ее пересчет скорее всего не очень поможет. Индекс был создан, когда все данные уже были вставлены. Ну да ладно, в этой теме не мой вопрос обсуждается.
ИМХО, это не так, ИМХО, статистика при создании/удалении/перестроении индекса не обновляется
если это надо представить в виде строки, то, для MySQL есть агрегирующая функция (кажется так называется) GROUP_CONCAT (только там по умолчанию стоит ограничение в 1024 символа), для MSSQL можно попробовать извратиться через CTE, у Oracle тоже вроде нечто подобное попадалось,
а в общем случае через курсор ляпить
Никак не на несколько порядков. В худшем случае каждый следующий подходящий результат будет задерживаться на log[осн2](N). N - количество уже найденных записей.
:)
Вы не учитываете две вещи:
1) Выведенные уже результаты надо серверу где-то хранить (для последующего сравнения, даже если это будут просто номера строк или физические адреса начала памяти строк, хотя в этом смысла мало, т.к. тогда всеравно придется за каждой строкой лазить:), соответственно используется некая WorkTable
2) В зависимости от "разного" эта табличка может быть создана на HD
я думаю, что дальше эту ужасающую картинку можно не расписывать
Цитата:
Вообще конечно да, union all предпочтительнее,
разница почти как между обычным селектом и селектом с группировкой
Цитата:
судя по where и так не будет повторяющихся столбцов
поверьте, серверу от этого ничуть не легче (он пока не проверит всеравно не поверит) :)
Цитата:
Чем union 2 запросов отличается от выполнения их по очереди?
при отсутствии сортировки UNION ALL почти что ничем, серверу единственно придется проверить поля на соответствии типов, но это копейки,
про UNION же, мне кажется, я уже довольно подробно все объяснил
Цитата:
И индексы были только что созданы в обоих серверах, так что смысла обновлять статистику большого не было.
ИМХО, Вы тут слегка путаете: только что созданный индекс или давно и карраптнутый (к примеру) разницы не играет.
На основе статистики оптимизатор принимает решение использовать ему индекс или нет, например, если у оптимизатора собственное мнение, что Вы собираетесь выбрать процентов 15 из таблицы, то он отключит индекс, а вот это мнение оптимизатор строит на основе статистики
Здраствуйте подскажите мне с помощью чего можно просмотреть базу MySQL. просто у меня стить денвер. Мне бы название программы или ссылку что бы скачать.
если там записей 10-15 будет?
я могу и ошибаться.. php и mysql только начал изучать
2 - сортирует по второму полю, desc означает "в обратном порядке", т.е. первая запись будет максимальной, иначе бы данный запрос возвращал бы первую минимальную запись.
зы там только одна "хитрость" присутствует: если будут несколько видов спорта, у которых одинаковое количество медалей и это количество будет максимальным, то всеравно будет показан только один вид
оставить вид спорта с макс медалями остальные откинуть
ну и?
тот запрос как раз выведет резалт в _одну_ строку, в этой строке будет указан вид спорта с количеством медалей, и это количество будет максимальным из всей выборки.
O_O
почему не правильный? и с чего такая уверенность?
или запрос не выполняется и база рисует ошибки?
зы или Вы не правильно озвучили требования к запросу. (Добавление)
JustUserR пишет:
В качестве взаимосвязанных агрегационных функций возможно рассмотрение таких операторов запроса результат действия которых применяется к выбранным информационным полям - в качестве возможного примерного варианта допустимо рассмотрение получение максимального элемента поля запроса на основе вложенных запросов
я не понимаю при чем тут взаимоСВЯЗЬ агрегирующих функций, как агрегатные функции связывабтся друг с другом и для чего это может понадобиться