Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Mandarin Member Откуда: Саратов Сообщений: 1213 |
Всем привет! Поправьте меня если я не прав. Мысли в слух... 1. При создании кластерного индекса, данные в таблице упорядочиваются и новые данные добавляются в конец индекса(таблицы). 2. Кластерный индекс я создаю по автоинкрементному полю тип integer, порядок сортировки asc. Соответственно чем новее данные тем дальше они от начала таблицы. 3. В таблице есть поле "дата", это дата добавления строки в таблицу, таблица заполняется несколько лет, соответственно если мне нужны данные за вчерашний день, то мне нужно достать данные из конца индекса(таблицы). 4. Если я переделаю сортировку в кластерном индексе на desc, то я ускорю получение информации которая записывалась недавно, например за вчерашний день. Правильно я рассуждаю? |
28 окт 19, 18:12 [22004509] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8730 |
Нет, новые данные попадают в то место кластерного индекса, куда указывает ключ у вставляемых записей В частном случае, если ключ монотонно возрастающий, да, в конец индекса.
Да
Да
Зависит от того, как вы будете читать эти данные. Например, при ask сортировке select top 1 * from ... where insert_date = %сегодня% order by id будет сканить почти всю таблицу select top 1 * from ... where insert_date = %сегодня% order by id desc просканит только последние страницы select top 1 * from ... where id = ... вообще не зависит от сортировки, и всегда считает только по 1-й странице с каждого уровня дерева индекс. Сообщение было отредактировано: 28 окт 19, 18:25 |
||||||||
28 окт 19, 18:21 [22004514] Ответить | Цитировать Сообщить модератору |
Mandarin Member Откуда: Саратов Сообщений: 1213 |
msLex, Первичный ключ (кластерный индекс) монотонный автоинкремент. Выборку данных буду делать так select * from table where field_date betwee @d1 and @d1 Где @d1 и @d1 ближайшие к нам даты. Индекс по полю field_date есть. Как будет быстрее работать, когда кластерный индекс сортируется по asc или по desc? |
28 окт 19, 18:25 [22004516] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8730 |
Без разницы. У вас будет либо full scan кластерного, либо range scan некластерного с lookup-ом в кластерный. |
||
28 окт 19, 18:28 [22004518] Ответить | Цитировать Сообщить модератору |
Mandarin Member Откуда: Саратов Сообщений: 1213 |
msLex, Понятно, спасибо. |
28 окт 19, 18:37 [22004520] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |