AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2015, 18:48   #1  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
14 вопросов об индексах в SQL Server которые вы стеснялись задать
Основы индексов в SQL Server

Одним из важнейших путей достижения высокой производительности SQL Server является использование индексов. Индекс ускоряет процесс запроса, предоставляя быстрый доступ к строкам данных в таблице, аналогично тому, как указатель в книге помогает вам быстро найти необходимую информацию. В этой статье я приведу краткий обзор индексов в SQL Server и объясню как они организованы в базе данных и как они помогают ускорению выполнения запросов к базе данных.


Структура индекса

Индексы создаются для столбцов таблиц и представлений. Индексы предоставляют путь для быстрый поиска данных на основе значений в этих столбцах. Например, если вы создадите индекс по первичному ключу, а затем будете искать строку с данными, используя значения первичного ключа, то SQL Server сначала найдет значение индекса, а затем использует индекс для быстрого нахождения всей строки с данными. Без индекса будет выполнен полный просмотр (сканирование) всех строк таблицы, что может оказать значительное влияние на производительность.
Вы можете создать индекс на большинстве столбцов таблицы или представления. Исключением, преимущественно, являются столбцы с типами данных для хранения больших объектов (LOB), таких как image, text или varchar(max). Вы также можете создать индексы на столбцах, предназначенных для хранения данных в формате XML, но эти индексы устроены немного иначе, чем стандартные и их рассмотрение выходит за рамки данной статьи. Также в статье не рассматриваются columnstore индексы. Вместо этого я фокусируюсь на тех индексах, которые наиболее часто применяются в базах данных SQL Server.
Индекс состоит из набора страниц, узлов индекса, которые организованы в виде древовидной структуры — сбалансированного дерева. Эта структура является иерархической по своей природе и начинается с корневого узла на вершине иерархии и конечных узлов, листьев, в нижней части, как показано на рисунке:



Репост )
__________________
Axapta book for developer
За это сообщение автора поблагодарили: AlexeyS (1), lev (5), Ivanhoe (1), gl00mie (3), S.Kuskov (1), SOVA (1).
Старый 14.01.2015, 07:59   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А можно спросить про индексы в Dynamics? Вопрос касается наследования таблиц, которые как мы знаем на SQL представляются одной широкой таблицей. Всё собирался сам посмотреть но никак руки не дойдут. Может кто уже разбирался, для общего развития. Интересно каким образом в AX2012 система задает уникальный индекс по дочерней таблице так чтобы это не влияло на остальных наследников? Ведь у тех в соответствующих полях только повторяющиеся NULL?

Через фильтруемый индекс?
Старый 14.01.2015, 08:38   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А можно спросить про индексы в Dynamics? Вопрос касается наследования таблиц, которые как мы знаем на SQL представляются одной широкой таблицей. Всё собирался сам посмотреть но никак руки не дойдут. Может кто уже разбирался, для общего развития. Интересно каким образом в AX2012 система задает уникальный индекс по дочерней таблице так чтобы это не влияло на остальных наследников? Ведь у тех в соответствующих полях только повторяющиеся NULL?

Через фильтруемый индекс?
Да, именно так и делает
По полю, указанному в свойстве InstanceRelationType базовой таблицы
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 14.01.2015, 14:50   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Интересно каким образом в AX2012 система задает уникальный индекс по дочерней таблице так чтобы это не влияло на остальных наследников? Ведь у тех в соответствующих полях только повторяющиеся NULL?

Через фильтруемый индекс?
Если не ошибаюсь, то по умолчанию null значения не индексируются, поэтому на остальных наследников этот индекс не должен повлиять. Они не должны им индексироваться по дефолту, раз в индексируемых полях для этих наследников лежат null...
Старый 14.01.2015, 15:08   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Logger Посмотреть сообщение
Если не ошибаюсь, то по умолчанию null значения не индексируются, поэтому на остальных наследников этот индекс не должен повлиять. Они не должны им индексироваться по дефолту, раз в индексируемых полях для этих наследников лежат null...
Боюсь, что ошибаетесь
http://technet.microsoft.com/ru-ru/l...=sql.105).aspx
Цитата:
В целях индексирования значения NULL рассматриваются как равные. Следовательно, нельзя создать уникальный индекс или ограничение UNIQUE, если ключевые значения NULL присутствуют в более чем одной строке.
Старый 14.01.2015, 15:11   #6  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
Если не ошибаюсь, то по умолчанию null значения не индексируются
В Oracle DB - может быть...
Старый 27.01.2015, 13:16   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от gl00mie Посмотреть сообщение
В Oracle DB - может быть...
Да, так и есть. Наш DBA такой пример построил. В оракле null значения ключа просто в индекс не попадают. Поэтому возможен уникальный индекс по столбцу в котором повторяются null значения.
За это сообщение автора поблагодарили: S.Kuskov (1), SOVA (1).
Старый 14.01.2015, 10:40   #8  
AlexeyS is offline
AlexeyS
Участник
 
404 / 339 (12) ++++++
Регистрация: 15.06.2004
Адрес: москва
заодно еще одна статья по индексам
http://msdn.microsoft.com/ru-ru/magazine/cc135978.aspx
За это сообщение автора поблагодарили: lev (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance Troubleshooting Checklist Part 1A [Introduction and SQL Configuration] Blog bot DAX Blogs 0 05.09.2014 21:11
emeadaxsupport: How to perform a data center change (change of the physical location) where a SQL server 2008 R 2 cluster installation and MS Dynamics AX 4.0 is involved? Blog bot DAX Blogs 0 21.06.2014 19:19
axinthefield: New DMVs in SQL Server 2008 R2 SP1 and SQL 2012 ('Denali') and Performance Analyzer for Microsoft Dynamics Blog bot DAX Blogs 0 14.01.2012 05:33
Dynamics AX Sustained Engineering: SQL Server 2005 sp3 & SQL Server 2008 with Dynamics AX Blog bot DAX Blogs 0 12.02.2009 06:08
Dynamics AX: Looking into SQL Server 2008 Blog bot DAX Blogs 0 16.01.2009 05:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:30.