powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по синтаксису Update
25 сообщений из 112, страница 4 из 5
Вопрос по синтаксису Update
    #39912005
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint
invm, видите и вопросов нет ))))), а то уже третью страницу флудить ))))
Да ну? Этот пример ведь никак не подтверждает и не опровергает вашу теорию о физическом хранении строк индекса в порядке его ключа.
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912006
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

тема закрыта )))
приз уходит Гавриленко Сергей Алексеевич
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912012
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

в 22055497
были такие слова "или же сделайте так чтобы этот код работал по другому"
и в 22055478
было "Сделайте "select * from table" как-нибудь так, чтобы список был отсортирован не по кластерному индексу, а как-то иначе и все вопросы будут закрыты"

А сделал это - Гавриленко Сергей Алексеевич, вот ему и орден (пришел, увидел, победил)

а Вы правы, насчет авторДа ну? Этот пример ведь никак не подтверждает и не опровергает вашу теорию о физическом хранении строк индекса в порядке его ключа., потому что это не моя теория, это данность производителя MSSQL - Майкрсофт, которая отражена в документации по этому продукту
авторКластеризованные индексы сортируют и хранят строки данных в таблицах или представлениях на основе их ключевых значений


или не верите ?
https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15
))))
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912017
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912024
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

Гавриленко Сергей Алексеевич
Этот код товарищу "гарантированно в порядке кластерного индекса" уже показывали?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @t table (
    id      int             primary key clustered
    , name  varchar (50)

    , unique (
        name
    )
)

insert @t
select 1, 'Z'
union all select 2, 'Y'
union all select 3, 'X'

select * from @t




entrypoint
Гавриленко Сергей Алексеевич,


)))) вот это уже что-то ))))
Согласен ))))

invm, видите и вопросов нет ))))), а то уже третью страницу флудить ))))


P.S
кстати, про гарантировано - это не моё,
вот высказывания, но это все не я )))
22051566 22052164 22055491
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912034
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint
это данность производителя MSSQL - Майкрсофт, которая отражена в документации по этому продукту
авторКластеризованные индексы сортируют и хранят строки данных в таблицах или представлениях на основе их ключевых значений
С каких пор в русском языке "на основе" = " в порядке"? Или на языке оригинала "based on" = "ordered by"?

Не надоело не отвечать на вопросы и выставляться идиотом?
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912051
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Оскорбления, оскорбления )))

invm
entrypoint
это данность производителя MSSQL - Майкрсофт, которая отражена в документации по этому продукту
пропущено...
С каких пор в русском языке "на основе" = " в порядке"? Или на языке оригинала "based on" = "ordered by"?

Не надоело не отвечать на вопросы и выставляться идиотом?


ну читайте дальше, не торопитесь, следующее предложение, всё же однозначно, по-другому и понять невозможно ))))
авторThere can be only one clustered index per table, because the data rows themselves can be stored in only one order .
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15


Черным же по белому написано
авторВ таблице может быть только один кластеризованный индекс, поскольку сами строки данных могут храниться только в одном заказе . Хотите другую таблицу с индексом оформляйте новый заказ

Или нет ? )))))
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912114
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint
Оскорбления, оскорбления )))
Просто констатация факта.
entrypoint
ну читайте дальше, не торопитесь, следующее предложение, всё же однозначно, по-другому и понять невозможно ))))
Документация тоже ошибается или не приводится в соответствие с реальностью.
Да и порядок хранения, на самом деле, к единственности кластерного индекса не имеет никакого отношения. Единственность кластерного индпекса (ранее 2005-го сервера) обуславливалась: а) его ключ используется как row locator, б) хранить на листовом уровне вместе с ключом еще и данные можно было только в одном индексе.
Пункт б неактуален, начиная с 2005-го сервера.

Если бы вы, прежде чем дискутировать, потрудились хоть немного узнать об индексах и их организации, то не выглядели бы идиотом в дискуссии.

А на вопрос
invm
что произойдет на уровне физического хранения, когда данные добавляются в середину индекса?
Так и не ответили, обо классический цугцванг...

Вам всего-то нужно привести пример, в котором: а) строки индекса действительно хранятся в порядке ключа индекса и б) вставка строк в середину индекса этот порядок сохраняет.
Элементарная задача, учитывая, что уже было показано как найти физическое положение строки.
Но вы демонстрируете только слепую веру в хранение в порядке ключа индекса и игнорируете любые примеры, показывающие обратное.
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912141
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

авторА на вопрос
invm
что произойдет на уровне физического хранения, когда данные добавляются в середину индекса?
Так и не ответили, обо классический цугцванг...

так вот же ? или снова что-то не дочитали, снова что-то пропустили, снова с чем-то поторопились ?
22055471

А вот и про вставку не по порядку
22051746

Читайте внимательно )))

А оскорбления и "Документация тоже ошибается или не приводится в соответствие с реальностью." это от отсутствия аргументов

Тогда, с таким подходом ("Документация тоже ошибается или не приводится в соответствие с реальностью."), в природе не существует аргументов, которые могли бы Вас убедить, все можно подменить словами )))))

P.S.
авторПункт б неактуален, начиная с 2005-го сервера.. Что об этом жалеть, ведь это могло быть и не правда авторДокументация тоже ошибается или не приводится в соответствие с реальностью. Главное не устарел
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-ver15 )))
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912150
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypointА вот и про вставку не по порядкуЧтобы увидеть последствия расщепления страниц для индекса, в индексе должно быть как минимум две страницы, и расщеплять надо не последнюю.
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912160
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

Вопросов нет )))))) Вы сделали за пять минут то, что мой оппонент не смог сделать за полторы недели

P.S.
в индексе должно быть как минимум две страницы, и расщеплять надо не последнюю
Это что-то меняет в 22055601 ?
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912165
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint,

Да, меняет. Логически отсоритрованные данные могут находиться в страницах, расположенных в файле в беспорядке. После этого порядок данных, которые будет возвращать select без order by зависит от того, какой физический оператор доступа выберет оптимизатор, степени параллелизма и других факторов. И ровно в тот момент, когда оптимизатору захоется просканировать таблицу не по цепочке страниц, а по iam, или, скажем, впендюрить в запрос параллелизм, у вам начнутся спецэффекты.

В общем, всегда, когда в плане у Scan-оператора стоит свойство ordered = false (и нет последующего оператора Sort), вы рано или поздно получите рандомно отсортированный набор. Особенно при мало-мальски значимых объемах.

Для иллюстрации немного меняем ваш пример:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
if object_id ( 'tempdb..#Repayments' ) is not null
    drop table #Repayments
go
CREATE TABLE #Repayments
             (AppCode       NVARCHAR(60) NOT NULL
            , RepaymentDate SMALLDATETIME NOT NULL
            , DocNumber     char (4000) NOT NULL
             );
CREATE CLUSTERED INDEX cx_Repayments ON #Repayments(AppCode, RepaymentDate);
GO

INSERT INTO #Repayments(AppCode      
            , RepaymentDate 
            , DocNumber    )
SELECT 'a', GETDATE(), 0 UNION ALL 
SELECT 'f', GETDATE(), 0 UNION ALL
SELECT 'b', GETDATE(), 0 UNION ALL 
SELECT 'e', GETDATE(), 0

SELECT 
       AppCode
     , RepaymentDate
     , DocNumber
     , c.*
FROM #Repayments a
cross apply
     (select cast('<x>' + replace(replace(replace(sys.fn_PhysLocFormatter(a.%%physloc%%), ':', '</x><x>'), '(', ''), ')', '') + '</x>' as xml)) b(x) cross apply
     (select b.x.value('x[1]', 'int'), b.x.value('x[2]', 'int'), b.x.value('x[3]', 'int')) c(file_id, page_id, slot_id)

go



и видим, что меньший по значению ключ располагается в большей по номеру странице:
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912169
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,
Это не совсем мой пример, но

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
if object_id ( 'tempdb..#Repayments' ) is not null
    drop table #Repayments
go
CREATE TABLE #Repayments
             (AppCode       NVARCHAR(60) NOT NULL
            , RepaymentDate SMALLDATETIME NOT NULL
            , DocNumber     char (4000) NOT NULL
             );
CREATE CLUSTERED INDEX cx_Repayments ON #Repayments(AppCode, RepaymentDate);
GO

INSERT INTO #Repayments(AppCode      
            , RepaymentDate 
            , DocNumber    )
SELECT 'a', GETDATE(), 0 UNION ALL 
SELECT 'f', GETDATE(), 0 UNION ALL
SELECT 'b', GETDATE(), 0 UNION ALL 
SELECT 'e', GETDATE(), 0

SELECT 
       AppCode
     , RepaymentDate
     , DocNumber
FROM #Repayments a


Код: sql
1.
2.
3.
4.
5.
AppCode                                                      RepaymentDate           DocNumber
a                                                            2020-01-09 18:04:00     0                                                                                                                                                                                                                                                               
b                                                            2020-01-09 18:04:00     0                                                                                                                                                                                                                                                               
e                                                            2020-01-09 18:04:00     0                                                                                                                                                                                                                                                               
f                                                            2020-01-09 18:04:00     0                 



))) Почему так ?
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912170
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypointПочему так Я уже пояснил, почему. Потому что в данном случае сервер перебирает страницы по их логическому порядку, а не физическому. И нет нормальных способов заставить его сделать по-другому на такой маленькой таблице для такого простого запроса. Но поверьте, сервер умеет выбирать данные не только по логическому порядку страниц, но и по физическому.

Специально для вас уже все украдено и описано: https://sqlperformance.com/2015/01/t-sql-queries/allocation-order-scans
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912186
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint, маразм крепчает :) Издевки бесполезны, они только больше подчеркивают ваш идиотизм :)
Ваши бла-бла-бла и переливания из пустого в порожнее уже никому не интересны.

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

Что-то мне подсказывает, что ответа так и не будет...
А ответы вида 22055471 , это все равно что "граф считает счета на своем счету" (с)
Если не знаете - так и напишите. Но видимо гонор не позволяет :)

Так уж и быть, дам намек - есть массив из 10 элементов. Нужно добавить 11-й элемент на позицию №2. Какой вид должен принять массив и что для этого нужно сделать?

entrypoint
Вы сделали за пять минут то, что мой оппонент не смог сделать за полторы недели
22051797
Если пример вам непонятен, то это не означает, что он неверен. Это означает, что у вас недостаточно знаний для его понимания.
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912310
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

Ясно, замечательная статья ))))
А если в таблице нет индексов, если никаких B-TREE
почему происходит так ?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
IF OBJECT_ID('tempdb..#t') IS NOT NULL
    DROP TABLE #t;

CREATE TABLE #t(id INT NOT NULL);

-- Залил тестовые данные
INSERT INTO #t(
       id
         )
SELECT DISTINCT 
       number
FROM 
     master.dbo.spt_values;

-- Добавил кластерный индекс 
CREATE CLUSTERED INDEX ci ON #t(id DESC);

-- Получил список
SELECT 
       id
FROM 
     #t;

-- Удалил индекс
DROP INDEX ci ON #t;

-- Что происходит здесь, почему нет индекса, а id в обратном порядке ?  
SELECT 
       id
FROM 
     #t;
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912323
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Ну что такое, скатились до уровня Черкизовского рынка
Здесь же форум профессионалов, на котором делятся знаниями, помогают советом и всё такое, в том числе указывают на чужие ошибки, конструктивно, без оскорблений, как и подобает Программисту с большой буквы ))))
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912324
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint
-- Что происходит здесь, почему нет индекса, а id в обратном порядке ?
SELECT
id
FROM
#t;
Точно-точно? Даже если присмотреться?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
2
1
0
-1
-32768
1469283328
1073741824
536870912
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912329
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov,

Вы получили такой результат ?

А какой MSSQL, какие настройки ?
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912334
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint
Sergey Sizov,

Вы получили такой результат ?
Странный вопрос... Думаете, я это просто сам нарисовал?
А какой MSSQL, какие настройки ?2017 express на виртуалке, все по дефолту.
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912337
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov,

Интересно ))))))
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912339
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint
invm,

Ну что такое, скатились до уровня Черкизовского рынка
Здесь же форум профессионалов, на котором делятся знаниями, помогают советом и всё такое, в том числе указывают на чужие ошибки, конструктивно, без оскорблений, как и подобает Программисту с большой буквы ))))

очередной Балабол с большой буквы, прости господи.
неуч к тому же, а уж пафоса до усрачки.
то invm: уж лучше Воронина пинать, он вменяемый
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912341
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

Вы, вообще, с чем не согласны ))))

Здесь же форум профессионалов, на котором делятся знаниями, помогают советом и всё такое, в том числе указывают на чужие ошибки, конструктивно, без оскорблений, как и подобает Программисту с большой буквы ))))
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912348
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entrypoint,

Ну что, опять издевками демонстрируете собственный идиотизм? Все что угодно, лишь бы не отвечать на неудобный вопрос? :)

Впрос свелся к элементарному (из серии "третий класс, вторая четверть")
invm
есть массив из 10 элементов. Нужно добавить 11-й элемент на позицию №2. Какой вид должен принять массив и что для этого нужно сделать?
Классический массив - самый простой пример упорядоченного хранения. Ответ на этот вопрос очевиден всем и вы его знаете. Ибо если не знаете - то банально профнепригодны.
Озвучив этот ответ и продолжив утверждать про упорядоченное хранение строк кластерного индекса, вы ставите под сомнение адекватность и профпригодность разработчиков SQL Server.
Гораздо более вероятно, что неадекватны таки вы вместе с составителями документации.

Согласно ваши же призывам
entrypoint
Код, только код критерий истины
entrypoint
Результат, критерий истины только результат, код в студию

Код показывающий, что разработчики SQL Server все же вполне адекватны, был дан - 22052357 и 22055452 . Но был благополучно пригнорирован :)

Так где же код, подтверждающий ваши утверждения и адекватность? Или теперь критерий истины только документация? Она как Священное писание - все, что в нем написано не должно никогда подвергаться сомнению?
Боюсь, что данного кода мы так никогда и не увидим :)

Подытоживая дискуссию - вы либо действительно неадекватны, либо просто придуриваетесь...
...
Рейтинг: 0 / 0
Вопрос по синтаксису Update
    #39912352
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

неадекватны таки вы вместе с составителями документации.
Кто-то стал отныне богом
И простил себе грехи;


Подытоживая дискуссию
Да давайте уже закончим с Вами.
Всё же ясно ?
вы либо действительно неадекватны, либо просто придуриваетесь...
...
Рейтинг: 0 / 0
25 сообщений из 112, страница 4 из 5
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по синтаксису Update
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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