powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Переход с mysql на mssql Express Edition
16 сообщений из 66, страница 3 из 3
Переход с mysql на mssql Express Edition
    #38395261
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinСвязь таблиц, надеюсь интуитивно понятна.
Ну, о связи я, предположим, догадаюсь. А вот с какого перепою "DstStateTransitID в
EventStateTransit" и в какое место тут можно воткнуть подзапрос - ни за что.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395262
Форбс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovmiksoftА если это не фетч, а подзапрос?
А осмысленный пример привести?..

попроще пример:

выбрать форумы, в которых находятся 100 тем, с макс.кол-вом просмотров
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395265
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форбскакое тут WHERE можно сформировать ?
Тут нужен вообще-то ORDER BY...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395266
Форбс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovpkarklinу меня "ума не хватит" додуматься до того, чтобы заставить сервер
сформировать многомиллионный резалтсет, а потом ограничить феч записей на клиенте.
Ну так я Вам открою маленький секрет: резалтсет в этом случае и не формируется целиком,
только те записи, которые действительно клиентом запрошены.

"пользователи" АДО.НЕТ - рыдают от зависти ... !
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395267
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА вот с какого перепою "DstStateTransitID в EventStateTransit"

Ибо не все события для объекта являются событиями перехода из одного состояния в другое.
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395269
Форбс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovФорбскакое тут WHERE можно сформировать ?
Тут нужен вообще-то ORDER BY...

ай бросьте! зачем нам ORDER BY !
"трясьти надо!" WHERE же ! :))
Dimitry SibiryakovpkarklinМногие СУБД сейчас поддерживают следующий синтаксис из ANSI/ISO
SQL:2008?
Я знаю ровно две. Но даже если идиотизм занесён в стандарт это его не уменьшает. Эта
конструкция всего лишь прогиб под тех, кто не в силах сформулировать вменяемые условия во
WHERE.
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395274
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmiksoftВзять топ-100 наиболее прибыльных товаров и приджойнить кучу справочных
таблиц.
А теперь внимание, вопрос: почему именно 100, а не 99 или 101? Какой критрий использовался
при выборе этой цифры?По массе нетехнических причин. Круглые числа легче воспринимаются психилогически.
Или по техническим причинам, но напрямую не связанным с БД. Например, 100 строчек влезает на лист бумаги. Или в рекламной брошюре места только на 100 товаров.

Dimitry Sibiryakovmiksoftбывает и что формируется.
В этом случае он и при использовании ROWS сформируется и никакая оптимизация это не
предотвратит.Но одно дело сформируется на миллионы записей и совсем другое - на сотню.
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395275
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinИбо не все события для объекта являются событиями перехода из одного
состояния в другое.
А нуль-переход у вас за переход уже не считается... Но это не отвечает на вопрос в каком
месте тут нужен подзапрос. Даже со всеми возможными извратами тут в лучшем случае можно
задействовать derived table. Это если оконные функции не справятся.

ФорбсWHERE же ! :))
WHERE, повторяю, для тех, кто способен выбранный критерий обосновать чем-то иным нежели
чесанием левой пятки СЕО.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395276
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftНо одно дело сформируется на миллионы записей и совсем другое - на сотню.
Не бывает в природе. Кляуза ROWS чисто технически абсолютно эквивалентна ограниченному
фетчу. Так что и формирование базового резалт-сета в точности одинаково.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395280
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmiksoftНо одно дело сформируется на миллионы записей и совсем другое - на сотню.
Не бывает в природе. Кляуза ROWS чисто технически абсолютно эквивалентна ограниченному
фетчу. Так что и формирование базового резалт-сета в точности одинаково. http://dev.mysql.com/doc/refman/5.5/en/limit-optimization.html If you use LIMIT row_count with ORDER BY, MySQL ends the sorting as soon as it has found the first row_count rows of the sorted result, rather than sorting the entire result. If ordering is done by using an index, this is very fast. If a filesort must be done, all rows that match the query without the LIMIT clause are selected, and most or all of them are sorted, before the first row_count are found. After the initial rows have been found, MySQL does not sort any remainder of the result set. У Оракла есть аналогичная оптимизация, доку, надеюсь, найдете самостоятельно.
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395284
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftIf you use LIMIT row_count with ORDER BY, MySQL ends the sorting as soon as
it has found the first row_count rows of the sorted result, rather than sorting the entire
result.
Ага. А теперь осталось понять какой телепатией MySQL узнаёт, что в несортированном остатке
нет ни одной записи из этого row_count.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395289
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА нуль-переход у вас за переход уже не считается...

Нет, ибо, например, присвоение объекту характеристики (фиксируется в Event), не является переходом состояния.

Dimitry SibiryakovНо это не отвечает на вопрос в каком
месте тут нужен подзапрос. Даже со всеми возможными извратами тут в лучшем случае можно
задействовать derived table. Это если оконные функции не справятся

К черту слова! Запрос приведите!

Dimitry SibiryakovWHERE, повторяю, для тех, кто способен выбранный критерий обосновать чем-то иным нежели
чесанием левой пятки СЕО.

Вот поэтому Вам никогда не быть CIO.
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395301
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinК черту слова! Запрос приведите!
Прямо так, без структуры таблиц? Ню-ню...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select атрибуты объекта, min_Moment
  from Object
   join (select id, min(Moment) min_Moment
          from Event
           join EventStateTransit on интуитивно понятно
         where id in (список) and DstStateTransitID = определённое состояние
         group by id)
    on интуитивно понятно


Где тут место для подзапроса да ещё и с ROWS/TOP/и т.п.?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395322
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovГде тут место для подзапроса да ещё и с ROWS/TOP/и т.п.?


Там, где серверу будет "легче" сделать TOP ... ORDER BY ... по индексу, чем Stream Aggregate.

ЗЫ. Синтаксис запроса еще ни есть мерило производительности.
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38395345
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklinТам, где серверу будет "легче" сделать TOP ... ORDER BY ... по индексу, чем
Stream Aggregate.
Без разницы. Там, где он сможет использовать индексную навигацию для ORDER BY, он сможет
использовать её и для GROUP BY. Механика-то та же самая.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переход с mysql на mssql Express Edition
    #38414867
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovmiksoftНо одно дело сформируется на миллионы записей и совсем другое - на сотню.
Не бывает в природе. Кляуза ROWS чисто технически абсолютно эквивалентна ограниченному
фетчу. Так что и формирование базового резалт-сета в точности одинаково.


Это, конечно же, совершенно неверно.

Простой пример:
Выборка по JOIN'у двух примерно равноразмерных больших таблиц, объединение по проиндексированным ключам.
Вменяемая СУБД конечно же сообразит, что при запрошенном полном резалт-сете нужно сделать какой-нибудь HASH JOIN, требующий предварительных подготовительных операций и далеко не сразу начинающий "выплёвывать" результаты.
На полном наборе данных это будет ЗНАЧИТЕЛЬНО быстрее NLJOIN, выдёргивающего записи по индексу по одной из random'ных мест "внешней" таблицы.
Или пусть не HASH, а MERGE JOIN, требующий предварительного полного сканирования и сортировки объединяемых таблиц, который тоже будет значительно быстрее NLJOIN.

При наличии информации о том, что выборка ограничена сотней записей, будет "в лоб" применён Nested Loop JOIN с немедленной отдачей результатов.


При наличии ORDER BY всё несколько интереснее, но тем не менее все равно есть существенное отличие . Могут быть использованы плохие для полного result set'а планы, но сразу начинающие отдавать записи.


Другое дело, что что с точки зрения как реляционной теории, так и правильногоо проектирования конструкции типа "отдай то, не знаю чего", часто и лежащие под fetch first... у ленивых разработчиков/бизнес-аналитиков, бессмысленны.
Тем не менее, ограниченная размером вывода выборка по упорядоченному списку, да и просто случайная выборка (sample) вполне адекватно могут отражать существующие "бизнес"-задачи.

Семантически FETCH FIRST N ROWS ONLY можно заменить соответствующими OLAP функциями с ограничением выборки предикатом в WHERE. По мне это красивее, но заставлять разработчиков использовать "... ROW_NUMBER() OVER(...) as RNUM ... WHERE RNUM < ..." вместо более короткого fetch first ... особого смысла не вижу (за некоторыми "но").
...
Рейтинг: 0 / 0
16 сообщений из 66, страница 3 из 3
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Переход с mysql на mssql Express Edition
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]