Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 October 23

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Clustered indexes are not a good choice for the following attributes:
* Columns that undergo frequent changes
This causes in the whole row to move, because the Database Engine must keep the data values of a row in physical order
https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-index-design-guide?view=sql-server-ver15

Смущает меня эта формулировка: ну ок, в следующий раз, когда будет выполняться alter index reorganize, строка физически переместится на диске, если новое значение ключа   отличается по порядку от старого. Какое отношение к этому имеет must keep the data values of a row in physical order, физический порядок данных в конкретной строке? (так понимаю, речь идёт о порядке столбцов в таблице, раз речь о строке в единственном числе)
источник

I

Igor in SqlCom.ru - Стиль жизни SQL
Здесь же речь про кластерный индекс - если изменяется его значение - строка физически переносится в другое место

"Кластеризованные индексы — не лучший выбор для следующих атрибутов:

столбцов, которые подвергаются частым изменениям;

Изменения вызывают перемещение целых строк, потому что компонент Компонент Database Engine должен сохранять значения данных строки в физическом порядке. " - есть же документиция на русском языке
https://docs.microsoft.com/ru-ru/sql/relational-databases/sql-server-index-design-guide?view=sql-server-ver15
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Igor
Здесь же речь про кластерный индекс - если изменяется его значение - строка физически переносится в другое место

"Кластеризованные индексы — не лучший выбор для следующих атрибутов:

столбцов, которые подвергаются частым изменениям;

Изменения вызывают перемещение целых строк, потому что компонент Компонент Database Engine должен сохранять значения данных строки в физическом порядке. " - есть же документиция на русском языке
https://docs.microsoft.com/ru-ru/sql/relational-databases/sql-server-index-design-guide?view=sql-server-ver15
меня тут смущает то, что идёт речь о строке в единственном числе)
источник

I

Igor in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
меня тут смущает то, что идёт речь о строке в единственном числе)
Вы имеете ввиду обновление целого диапазона индекса?
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
Clustered indexes are not a good choice for the following attributes:
* Columns that undergo frequent changes
This causes in the whole row to move, because the Database Engine must keep the data values of a row in physical order
https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-index-design-guide?view=sql-server-ver15

Смущает меня эта формулировка: ну ок, в следующий раз, когда будет выполняться alter index reorganize, строка физически переместится на диске, если новое значение ключа   отличается по порядку от старого. Какое отношение к этому имеет must keep the data values of a row in physical order, физический порядок данных в конкретной строке? (так понимаю, речь идёт о порядке столбцов в таблице, раз речь о строке в единственном числе)
Что тебя смущает - не понятно. Кластерный индекс должен на таблице быть один, и это должен быть первичный ключь.
Первичный ключ не меняют, поля не меняют никогда.
Собственно, это и написано
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
Clustered indexes are not a good choice for the following attributes:
* Columns that undergo frequent changes
This causes in the whole row to move, because the Database Engine must keep the data values of a row in physical order
https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-index-design-guide?view=sql-server-ver15

Смущает меня эта формулировка: ну ок, в следующий раз, когда будет выполняться alter index reorganize, строка физически переместится на диске, если новое значение ключа   отличается по порядку от старого. Какое отношение к этому имеет must keep the data values of a row in physical order, физический порядок данных в конкретной строке? (так понимаю, речь идёт о порядке столбцов в таблице, раз речь о строке в единственном числе)
Это СУБД должна , то есть у неё нет другого выхода просто, хранить строки физически упорядоченными.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
Clustered indexes are not a good choice for the following attributes:
* Columns that undergo frequent changes
This causes in the whole row to move, because the Database Engine must keep the data values of a row in physical order
https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-index-design-guide?view=sql-server-ver15

Смущает меня эта формулировка: ну ок, в следующий раз, когда будет выполняться alter index reorganize, строка физически переместится на диске, если новое значение ключа   отличается по порядку от старого. Какое отношение к этому имеет must keep the data values of a row in physical order, физический порядок данных в конкретной строке? (так понимаю, речь идёт о порядке столбцов в таблице, раз речь о строке в единственном числе)
Тут ты проreorganize что-то загнул совсем не в тему. Он тут ни при чем
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Igor
Вы имеете ввиду обновление целого диапазона индекса?
>because the Database Engine must keep the data values of a row in physical order
>потому что компонент Компонент Database Engine должен сохранять значения данных строки в физическом порядке

тут речь о строке в единственном числе. Просто какое отношение порядок столбцов в строке имеет к тому, что на кластеризованном индексе в ключевых столбцах  обновились данные и строка из-за этого переместилась
источник

I

Igor in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
>because the Database Engine must keep the data values of a row in physical order
>потому что компонент Компонент Database Engine должен сохранять значения данных строки в физическом порядке

тут речь о строке в единственном числе. Просто какое отношение порядок столбцов в строке имеет к тому, что на кластеризованном индексе в ключевых столбцах  обновились данные и строка из-за этого переместилась
Столбцы в строке не меняются, перемещается сама строка - затратная операция, поэтому и не рекомендуемая
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Igor
Столбцы в строке не меняются, перемещается сама строка - затратная операция, поэтому и не рекомендуемая
по-моему, никак не связано. Ну вот, на место старых данных в столбце (который входит в ключ) в конкретной строке ты записал другие данные. С чего бы это влияло на другие столбцы в той же строке 🤷🏻‍♂️
источник
2020 October 24

IC

Igor Chizhov in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Что тебя смущает - не понятно. Кластерный индекс должен на таблице быть один, и это должен быть первичный ключь.
Первичный ключ не меняют, поля не меняют никогда.
Собственно, это и написано
Не обязательно первичный ключ должен быть кластерным. Как правило - да, но не всегда. Например, делать кластерным непоследовательный guid - бессмысленная затея.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Igor Chizhov
Не обязательно первичный ключ должен быть кластерным. Как правило - да, но не всегда. Например, делать кластерным непоследовательный guid - бессмысленная затея.
Безусловно. Но в современном SQL server - 90% кластер - первичный ключ- автоинкремент
источник

IC

Igor Chizhov in SqlCom.ru - Стиль жизни SQL
Тут согласен. Но есть, например, Аксапта )
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
>because the Database Engine must keep the data values of a row in physical order
>потому что компонент Компонент Database Engine должен сохранять значения данных строки в физическом порядке

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

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
>because the Database Engine must keep the data values of a row in physical order
>потому что компонент Компонент Database Engine должен сохранять значения данных строки в физическом порядке

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

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Да ты выдрал это из контекста, и неверно интерпретируешь, данные строк, то есть строки сами должны храниться в порядке полей кластерного индекса.
и да и нет🧐
логически должны храниться в порядке, который определяется кластеризованным индексом. Физический порядок хранения строк, по факту, может отличаться
источник

n

nkun in SqlCom.ru - Стиль жизни SQL
Добрый вечер, можете, пожалуйста, помочь со структурой?

Есть табличка юзеров, студентов и преподавателей. Юзер одновременно может быть либо студентом, либо преподавателем, при этом у преподавателей есть список предметов которые они могут вести, в отдельной табличке со связью многие ко многим, студенты объединены в группы со связью один ко многим, и есть расписание, где хранится номер группы, что за предмет и преподаватель который ведёт то или иное занятие. Добавлять опциональные связи 1 к 1 между сущностью юзера и преподавателя, юзера и студента кажется не лучшим выходом. Как в таком случае лучше поступить?
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
и да и нет🧐
логически должны храниться в порядке, который определяется кластеризованным индексом. Физический порядок хранения строк, по факту, может отличаться
Не может
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
и да и нет🧐
логически должны храниться в порядке, который определяется кластеризованным индексом. Физический порядок хранения строк, по факту, может отличаться
Кластерный индекс на то и кластерный, что порядок задаёт, физически
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
nkun
Добрый вечер, можете, пожалуйста, помочь со структурой?

Есть табличка юзеров, студентов и преподавателей. Юзер одновременно может быть либо студентом, либо преподавателем, при этом у преподавателей есть список предметов которые они могут вести, в отдельной табличке со связью многие ко многим, студенты объединены в группы со связью один ко многим, и есть расписание, где хранится номер группы, что за предмет и преподаватель который ведёт то или иное занятие. Добавлять опциональные связи 1 к 1 между сущностью юзера и преподавателя, юзера и студента кажется не лучшим выходом. Как в таком случае лучше поступить?
Используй отношение подкатегории, она же наследование классов.
источник