PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 21
dc93 Отправлено: 29 Ноября, 2010 - 10:33:05 • Тема: UNION • Форум: SQL и Архитектура БД

Ответов: 13
Просмотров: 122
Champion

черт, глаз замылился, "слона то я и не приметил" :(
Цитата:
- 9 отдельный запросов, в каждом из которых есть сортировка и забирание первых 6 записей.
- Те же 9 запросов, только без сортировки, в которых просто берутся первые 6 записей, объединяются юнионом, потом один раз результат сортируется


помнится, когда я последний раз с MySQL плотно общался, столкнулся с такой проблемой:
одни и теже запросы (довольно простые на небольшом объеме) выбранные непосредственно из жабы выполнялись как и положенно, т.е. практически мгновенно, а вот перенесенные в хп периодически тормозили... у меня тогда так руки до этого и не дошли (разработка остановилась на прототипе), но подозрения были именно на своп на HD, думаю, что и здесь тоже что-то похожее творится, т.к. операция на порядок сложнее (у меня то вообще одни и теже действия выполнялись) и что там сервак себе по этому поводу думает, надо отдельно разбираться

зы (из околонаучного шаманства): я бы в примере, для начала, попробывал заменить * на названия полей и убрать скобки вокруг селектов...
а вообще интересно было бы посмотреть план запроса

Цитата:
Не, я к тому, что по новому индексу актуальная статистика и ее пересчет скорее всего не очень поможет. Индекс был создан, когда все данные уже были вставлены. Ну да ладно, в этой теме не мой вопрос обсуждается.



ИМХО, это не так, ИМХО, статистика при создании/удалении/перестроении индекса не обновляется
dc93 Отправлено: 28 Ноября, 2010 - 21:01:28 • Тема: Прошу нашей помащи • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 40


bastozz
ИМХО, это вопрос для другого топика:
http://forum.php.su/forums.php?forum=1

думаю там быстрее могут помочь, а вообще мой совет: напихать в код отладочной печати и сидеть анализировать
dc93 Отправлено: 28 Ноября, 2010 - 20:48:17 • Тема: Цепочка значений • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 61
nextdrift пишет:
спасибо. Буду пробовать


если это надо представить в виде строки, то, для MySQL есть агрегирующая функция (кажется так называется) GROUP_CONCAT (только там по умолчанию стоит ограничение в 1024 символа), для MSSQL можно попробовать извратиться через CTE, у Oracle тоже вроде нечто подобное попадалось,
а в общем случае через курсор ляпить
dc93 Отправлено: 28 Ноября, 2010 - 20:31:33 • Тема: UNION • Форум: SQL и Архитектура БД

Ответов: 13
Просмотров: 122
Champion
Цитата:
Никак не на несколько порядков. В худшем случае каждый следующий подходящий результат будет задерживаться на log[осн2](N). N - количество уже найденных записей.


:)
Вы не учитываете две вещи:
1) Выведенные уже результаты надо серверу где-то хранить (для последующего сравнения, даже если это будут просто номера строк или физические адреса начала памяти строк, хотя в этом смысла мало, т.к. тогда всеравно придется за каждой строкой лазить:), соответственно используется некая WorkTable

2) В зависимости от "разного" эта табличка может быть создана на HD

я думаю, что дальше эту ужасающую картинку можно не расписывать
Цитата:
Вообще конечно да, union all предпочтительнее,


разница почти как между обычным селектом и селектом с группировкой

Цитата:
судя по where и так не будет повторяющихся столбцов


поверьте, серверу от этого ничуть не легче (он пока не проверит всеравно не поверит) :)

Цитата:
Чем union 2 запросов отличается от выполнения их по очереди?

при отсутствии сортировки UNION ALL почти что ничем, серверу единственно придется проверить поля на соответствии типов, но это копейки,

про UNION же, мне кажется, я уже довольно подробно все объяснил

Цитата:
И индексы были только что созданы в обоих серверах, так что смысла обновлять статистику большого не было.

ИМХО, Вы тут слегка путаете: только что созданный индекс или давно и карраптнутый (к примеру) разницы не играет.
На основе статистики оптимизатор принимает решение использовать ему индекс или нет, например, если у оптимизатора собственное мнение, что Вы собираетесь выбрать процентов 15 из таблицы, то он отключит индекс, а вот это мнение оптимизатор строит на основе статистики
dc93 Отправлено: 28 Ноября, 2010 - 19:41:09 • Тема: Прошу нашей помащи • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 40
bastozz пишет:
У меня проблема с выводом у меня дублируется запись . Помогите


значит запись заносится два раза...

а с чем помочь то?
dc93 Отправлено: 28 Ноября, 2010 - 19:37:31 • Тема: UNION • Форум: SQL и Архитектура БД

Ответов: 13
Просмотров: 122
Champion
Цитата:
Разница в том, что UNION ALL не будет исключать из результата одинаковые строки, выбранные разными запросами объединения. При чем тут это?


это риторический вопрос?

(так как именно из-за исключения _одинаковых_ строк время выполнения может увеличиться на несколько порядков)

Цитата:
А по поводу скорости выполнения - тут что-то действительно необъяснимое


ага, уж такое необъяснимое, прям "есть ли жизнь на марсе"

Цитата:
На одном индекс по field использовался при выборке, на другом - нет. Пришлось удивиться и переписать запрос.


может проще было статистику обновить? в обоих случаях данные в таблицах были одинаковые?

зы в некоторых случаях оптимизатор вполне обоснованно отказывается от использования индексов

Fobius
Цитата:
Это одно и тоже, только отсортировано поразному.


ого, я такого еще не слышал... откуда "дровишки"?
dc93 Отправлено: 27 Ноября, 2010 - 23:13:08 • Тема: спомощью чего можно просмотреть таблици вMysql • Форум: Администрирование БД

Ответов: 5
Просмотров: 4039
avrudoi пишет:
Здраствуйте подскажите мне с помощью чего можно просмотреть базу MySQL. просто у меня стить денвер. Мне бы название программы или ссылку что бы скачать.


SQLyog
dc93 Отправлено: 27 Ноября, 2010 - 22:40:55 • Тема: Цепочка значений • Форум: SQL и Архитектура БД

Ответов: 8
Просмотров: 61
nextdrift
CODE (htmlphp):
скопировать код в буфер обмена
  1. select a.id_a, a.id_b from table a
  2. where
  3. exists (select 1 from table b where a.id_a = b.id_b)
  4. order by 1 desc
dc93 Отправлено: 27 Ноября, 2010 - 22:12:59 • Тема: запрос.. • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 175

grugoriy пишет:
ясно) спасиб за помощь.
dc 93 стукни в аську 383796550


у меня нет аськи, чего и всем желаю :)[off]
dc93 Отправлено: 27 Ноября, 2010 - 21:42:53 • Тема: запрос.. • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 175
grugoriy пишет:
GROUP BY vid
order by 2 desc limit 1


сортирует 2 записи в обратку, оставляет 1 запись.

если там записей 10-15 будет?
я могу и ошибаться.. php и mysql только начал изучать


2 - сортирует по второму полю, desc означает "в обратном порядке", т.е. первая запись будет максимальной, иначе бы данный запрос возвращал бы первую минимальную запись.

зы там только одна "хитрость" присутствует: если будут несколько видов спорта, у которых одинаковое количество медалей и это количество будет максимальным, то всеравно будет показан только один вид
dc93 Отправлено: 27 Ноября, 2010 - 21:29:23 • Тема: запрос.. • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 175
grugoriy пишет:
оставить вид спорта с макс медалями остальные откинуть

ну и?

тот запрос как раз выведет резалт в _одну_ строку, в этой строке будет указан вид спорта с количеством медалей, и это количество будет максимальным из всей выборки.

так где порылась "ошибка"?
dc93 Отправлено: 27 Ноября, 2010 - 21:17:00 • Тема: запрос.. • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 175
grugoriy
что значит "урезать"?
dc93 Отправлено: 27 Ноября, 2010 - 21:04:51 • Тема: запрос.. • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 175
grugoriy пишет:

это конечно не правильный вариант...

O_O
почему не правильный? и с чего такая уверенность?

или запрос не выполняется и база рисует ошибки?

зы или Вы не правильно озвучили требования к запросу.
(Добавление)
JustUserR пишет:
В качестве взаимосвязанных агрегационных функций возможно рассмотрение таких операторов запроса результат действия которых применяется к выбранным информационным полям - в качестве возможного примерного варианта допустимо рассмотрение получение максимального элемента поля запроса на основе вложенных запросов


я не понимаю при чем тут взаимоСВЯЗЬ агрегирующих функций, как агрегатные функции связывабтся друг с другом и для чего это может понадобиться

я правильно понял пример
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. select
  3.   max(select sum(b.Price) from Table2 b where a.ID = b.ID),
  4.   a.Name
  5. from
  6.   Table1 a
  7. group by a.Name
  8.  

?
dc93 Отправлено: 27 Ноября, 2010 - 20:57:09 • Тема: запрос.. • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 175
JustUserR

что такое
Цитата:
взаимосвязанные агрегационные функции


?
dc93 Отправлено: 27 Ноября, 2010 - 20:49:54 • Тема: запрос.. • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 175
grugoriy пишет:
на картинке все отображено..



CODE (htmlphp):
скопировать код в буфер обмена
  1. SELECT vid,count(medal)
  2. FROM sportsmen
  3. WHERE god_poluch='$nn'
  4. GROUP BY  vid
  5. order by 2 desc limit 1
  6.  

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB