Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 вперед Ctrl→ все |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
он вам тоже самое проиллюстрировал...что порядок не гарантирован (при том же распараллеливании, например), или вы по принципу: "смотрю в книгу..." |
||
14 фев 13, 12:26 [13925340] Ответить | Цитировать Сообщить модератору |
Ennor Tiegael Member Откуда: Сообщений: 3348 |
|
||||
14 фев 13, 12:29 [13925374] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
При желании можно это сэмулировать: create table XXX (id int identity primary key clustered, field_A int, field_B varchar(100), field_C datetime); create index tipa_clustered on XXX (field_A) include (field_B, field_C); Правда, есть ли в этом смысл, я не знаю. |
||
14 фев 13, 12:30 [13925382] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
Ваш ответ меня не устроил по причинам, приведенным в статьях про кластерные индексы. Опровержение статьи (в случае параллелизма) - приведено, при всем уважении, - не вами. Опять же, пи всем уважении, ваш ответ очень похож на "Аллилуйя", поскольку пытается теорему превратить в аксиому. |
||||
14 фев 13, 12:32 [13925395] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Мне вот интересно Как же вы будете гарантировать теперь порядок в результатах ? Уберете везде ORDER BY и будете создавать таблицы с единственным кластерным индексом ? |
||
14 фев 13, 12:35 [13925419] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
|
||||
14 фев 13, 12:38 [13925438] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
ОК, т.е. на стандарты вам тоже всё-равно: Самый главный совет, который Вы вынесете после прочтения этой статьи, соответствует стандарту ANSI SQL, который говорит, что запрос без предложения ORDER BY не гарантирует возвращения данных в каком либо порядке. Если нужно гарантировать, что данные будут возвращены в требующемся порядке, нужно указать это в предложении ORDER BY. Независимо оттого, что мы знаем (или думаем, что знаем) о внутренней организации SQL Server, продемонстрированные примеры должны послужить поводом для очередного переосмысления того, что мы делаем. Могут существовать такие методы доступа, о которых мы не знаем, которые могут использоваться только в определённых обстоятельствах, а также в будущих версиях SQL Server могут появиться новые методы доступа, или даже в следующих сервисных пакетах. В таблице c кластеризованным индексом при возрастании уровня логической фрагментации просмотр в порядке распределения становится более эффективным, чем просмотр в порядке индекса. |
||
14 фев 13, 12:38 [13925442] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
специально для невнимательных: 13925046 |
14 фев 13, 12:39 [13925457] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Статью смотрел по диагонали, а что там неправильного? |
||
14 фев 13, 12:48 [13925509] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
там утверждается, что в случае отсутствия явных указаний with (nolock) или tablock вывод всегда осуществляется в порядке кластерного индекса. Как и в вашем эксперименте до параллелизма :) |
14 фев 13, 12:51 [13925523] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
ээ... извиняюсь, вывод самостоятельный и отличается от приведенного в статье. Вывод навеян результатами проведенных в статье экспериментов, которые игнорируются в финальных выводах статьи (и тогда непонятно, к чему они были проведены) |
14 фев 13, 12:58 [13925590] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
нет, все же опровергнутый вывод не придуман :)
|
||
14 фев 13, 13:07 [13925665] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34659 |
Любое параллельное выполнение запроса также тут же убъёт "физический порядок" следования записей. |
||
14 фев 13, 13:12 [13925718] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
Чего мусолить-то уже вторую страницу? Все же просто, как три копейки. Без указания order by могут быть следующие варианты: а) Сервер выберет для доступа к данным кластерный индекс. Скан индекса (в принципе, любого) может быть упорядоченный, а может быть и нет. За это отвечает свойство ordered у операции, которую можно наблюдать в плане выполнения запроса. б) Сервер выберет вообще некластерный индекс, у которого порядок редко совпадает с кластерным. Поэтому кто не пишет order by, но при этом ожидает какой-то определенный да еще и гарантированный на таблицах любой структуры и на сервере любой версии порядок, тот сам себе злобный буратина и его никому не жалко ни разу. |
14 фев 13, 13:16 [13925750] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34659 |
Нет order by -- нет порядка. Есть order by -- есть порядок. Какое слово из этих 10 тебе не понятно ? |
||
14 фев 13, 13:18 [13925772] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Вроде параллелизм не опровергает этот вывод. Каждый процессор внутри выделенного ему куска данных "во всех других случаях будет использовать просмотр в порядке индекса". Каша получится при соединении этих кусков воедино. |
||||
14 фев 13, 13:23 [13925812] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
PS для любителей дешевых наездов: был интересен не постулат "нет order by - нет порядка" а его основания. И вообще, после 13924965 пошел дешевый трёп в пользу самолюбования |
||||
14 фев 13, 13:28 [13925860] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Основания написаны в BOL Прямо так и написано ORDER BY guarantees a sorted result only for the outermost SELECT statement of a query. For example, consider the following view definition: CREATE VIEW TopView AS SELECT TOP 50 PERCENT * FROM Person.Person ORDER BY LastName; Then query the view: SELECT * FROM TopView; Although the view definition contains an ORDER BY clause, that ORDER BY clause is used only to determine the rows returned by the TOP clause. When querying the view itself, SQL Server does not guarantee the results will be ordered, unless you specify so explicitly, as shown in the following query: А все остальное - это всего лишь попытка получения дополнительных знаний о внутренних механизмах сервера. |
||
14 фев 13, 13:39 [13925974] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34659 |
Не, кластерный индекс действительно единственный. Только порядок записей в результате запроса он не гарантирует. |
||
14 фев 13, 13:44 [13926030] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34659 |
Это что значит вообще ? Какое-такое логическое упорядочивание ? ![]() |
||
14 фев 13, 13:46 [13926054] Ответить | Цитировать Сообщить модератору |
Cygapb-007 Member Откуда: Сообщений: 1677 |
|
||
14 фев 13, 13:48 [13926075] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34659 |
Значит, лажовая статья. Не читай. |
||
14 фев 13, 13:50 [13926089] Ответить | Цитировать Сообщить модератору |
MasterZiv Member Откуда: Питер Сообщений: 34659 |
а что за статья-то ? ЧТо-то я запутался. Дай пож. прямую ссылку ещё раз на эту статью, чтобы прочитать. |
||
14 фев 13, 13:52 [13926113] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Остракизму подлежат подмена понятий. Все "братки" носят золотые цепи. Из этого не следует, что любой, кто носит золотую цепь, является "братком". |
||
14 фев 13, 13:53 [13926125] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
|
||||||
14 фев 13, 14:13 [13926243] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 [2] 3 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |