|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
pkarklinСвязь таблиц, надеюсь интуитивно понятна. Ну, о связи я, предположим, догадаюсь. А вот с какого перепою "DstStateTransitID в EventStateTransit" и в какое место тут можно воткнуть подзапрос - ни за что. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 20:57 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovmiksoftА если это не фетч, а подзапрос? А осмысленный пример привести?.. попроще пример: выбрать форумы, в которых находятся 100 тем, с макс.кол-вом просмотров ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:00 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
Форбскакое тут WHERE можно сформировать ? Тут нужен вообще-то ORDER BY... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:03 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovpkarklinу меня "ума не хватит" додуматься до того, чтобы заставить сервер сформировать многомиллионный резалтсет, а потом ограничить феч записей на клиенте. Ну так я Вам открою маленький секрет: резалтсет в этом случае и не формируется целиком, только те записи, которые действительно клиентом запрошены. "пользователи" АДО.НЕТ - рыдают от зависти ... ! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:04 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА вот с какого перепою "DstStateTransitID в EventStateTransit" Ибо не все события для объекта являются событиями перехода из одного состояния в другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:04 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovФорбскакое тут WHERE можно сформировать ? Тут нужен вообще-то ORDER BY... ай бросьте! зачем нам ORDER BY ! "трясьти надо!" WHERE же ! :)) Dimitry SibiryakovpkarklinМногие СУБД сейчас поддерживают следующий синтаксис из ANSI/ISO SQL:2008? Я знаю ровно две. Но даже если идиотизм занесён в стандарт это его не уменьшает. Эта конструкция всего лишь прогиб под тех, кто не в силах сформулировать вменяемые условия во WHERE. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:06 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovmiksoftВзять топ-100 наиболее прибыльных товаров и приджойнить кучу справочных таблиц. А теперь внимание, вопрос: почему именно 100, а не 99 или 101? Какой критрий использовался при выборе этой цифры?По массе нетехнических причин. Круглые числа легче воспринимаются психилогически. Или по техническим причинам, но напрямую не связанным с БД. Например, 100 строчек влезает на лист бумаги. Или в рекламной брошюре места только на 100 товаров. Dimitry Sibiryakovmiksoftбывает и что формируется. В этом случае он и при использовании ROWS сформируется и никакая оптимизация это не предотвратит.Но одно дело сформируется на миллионы записей и совсем другое - на сотню. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:15 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
pkarklinИбо не все события для объекта являются событиями перехода из одного состояния в другое. А нуль-переход у вас за переход уже не считается... Но это не отвечает на вопрос в каком месте тут нужен подзапрос. Даже со всеми возможными извратами тут в лучшем случае можно задействовать derived table. Это если оконные функции не справятся. ФорбсWHERE же ! :)) WHERE, повторяю, для тех, кто способен выбранный критерий обосновать чем-то иным нежели чесанием левой пятки СЕО. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:16 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
miksoftНо одно дело сформируется на миллионы записей и совсем другое - на сотню. Не бывает в природе. Кляуза ROWS чисто технически абсолютно эквивалентна ограниченному фетчу. Так что и формирование базового резалт-сета в точности одинаково. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:19 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
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. У Оракла есть аналогичная оптимизация, доку, надеюсь, найдете самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:24 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:30 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovА нуль-переход у вас за переход уже не считается... Нет, ибо, например, присвоение объекту характеристики (фиксируется в Event), не является переходом состояния. Dimitry SibiryakovНо это не отвечает на вопрос в каком месте тут нужен подзапрос. Даже со всеми возможными извратами тут в лучшем случае можно задействовать derived table. Это если оконные функции не справятся К черту слова! Запрос приведите! Dimitry SibiryakovWHERE, повторяю, для тех, кто способен выбранный критерий обосновать чем-то иным нежели чесанием левой пятки СЕО. Вот поэтому Вам никогда не быть CIO. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 21:38 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
pkarklinК черту слова! Запрос приведите! Прямо так, без структуры таблиц? Ню-ню... Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Где тут место для подзапроса да ещё и с ROWS/TOP/и т.п.? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 22:02 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovГде тут место для подзапроса да ещё и с ROWS/TOP/и т.п.? Там, где серверу будет "легче" сделать TOP ... ORDER BY ... по индексу, чем Stream Aggregate. ЗЫ. Синтаксис запроса еще ни есть мерило производительности. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 22:36 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
pkarklinТам, где серверу будет "легче" сделать TOP ... ORDER BY ... по индексу, чем Stream Aggregate. Без разницы. Там, где он сможет использовать индексную навигацию для ORDER BY, он сможет использовать её и для GROUP BY. Механика-то та же самая. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2013, 23:21 |
|
Переход с mysql на mssql Express Edition
|
|||
---|---|---|---|
#18+
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 ... особого смысла не вижу (за некоторыми "но"). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2013, 21:18 |
|
|
start [/forum/topic.php?fid=35&msg=38395284&tid=1552434]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 143ms |
0 / 0 |