Что такое индекс в SQL? Можете ли вы объяснить или дать ссылку для ясного понимания?
Где следует использовать индекс?
Индекс используется для ускорения поиска в базе данных. У MySQL есть хорошая документация по этому вопросу (которая актуальна и для других SQL-серверов): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Индекс можно использовать для эффективного поиска всех строк, соответствующих некоторому столбцу в вашем запросе, а затем пройтись только по этому подмножеству таблицы, чтобы найти точные совпадения. Если у вас нет индексов для любого столбца в предложении WHERE
, сервер SQL
должен пройтись по всей таблице и проверить каждую строку на соответствие, что может быть медленной операцией для больших таблиц.
Индекс также может быть индексом UNIQUE
, что означает, что вы не можете иметь дубликаты значений в этом столбце, или PRIMARY KEY
, который в некоторых системах хранения определяет, где в файле базы данных хранится значение.
В MySQL вы можете использовать EXPLAIN
перед оператором SELECT
, чтобы узнать, будет ли ваш запрос использовать какой-либо индекс. Это хорошее начало для устранения проблем с производительностью. Подробнее читайте здесь:
http://dev.mysql.com/doc/refman/5.0/en/explain.html
Кластерный индекс похож на содержимое телефонной книги. Вы можете открыть книгу в «Хильдич, Дэвид» и найти всю информацию для всех «Хильдич» рядом друг с другом. Здесь ключи для кластерного индекса (фамилия, имя).
Это делает кластерные индексы отличными для извлечения большого количества данных на основе запросов на основе диапазона, поскольку все данные расположены рядом друг с другом.
Поскольку кластерный индекс фактически связан с тем, как хранятся данные, для каждой таблицы возможен только один из них (хотя вы можете обмануть, чтобы смоделировать несколько кластерных индексов).
Некластерный индекс отличается тем, что вы можете иметь их много, и они затем указывают на данные в кластерном индексе. Вы могли бы иметь, например,. некластерный указатель в конце телефонной книги, который включен (город, адрес)
Представьте, если бы вам пришлось искать в телефонной книге всех людей, которые живут в 'Лондон и № 39; - только с кластерным индексом вам придется искать каждый элемент в телефонной книге, поскольку ключ на кластерном индексе включен (фамилия, имя) и в результате люди, живущие в Лондоне, случайным образом разбросаны по всему индексу.
Если у вас есть некластерный индекс в (город), эти запросы можно выполнить гораздо быстрее.
Надеюсь, это поможет!
Очень хорошая аналогия - думать об индексе базы данных как об индексе в книге. Если у вас есть книга о странах и вы ищете Индию, тогда зачем вам пролистывать всю книгу - что эквивалентно полному сканированию таблицы в терминологии базы данных - когда вы можете просто перейти к указателю в конце книги, который расскажет вам точные страницы, где вы можете найти информацию об Индии. Точно так же, поскольку индекс книги содержит номер страницы, индекс базы данных содержит указатель на строку, содержащий значение, которое вы ищете в своем SQL
Индекс используется для ускорения выполнения запросов. Это происходит за счет уменьшения количества страниц данных базы данных, которые необходимо посетить/просканировать.
В SQL Server кластеризованный индекс определяет физический порядок данных в таблице. На одну таблицу может быть только один кластеризованный индекс (кластеризованный индекс является таблицей). Все остальные индексы на таблице называются некластеризованными.
[Индекс (вики)][5]
[5]: http://en.wikipedia.org/wiki/Index_(база данных)
Индексы - это быстрый поиск данных .
Индексы в базе данных аналогичны индексам, которые вы найдете в книге. Если в книге есть указатель, и я прошу вас найти главу в этой книге, вы можете быстро найти его с помощью указателя. С другой стороны, если в книге нет указателя, вам придется тратить больше времени на поиск главы, просматривая каждую страницу от начала до конца книги.
Аналогичным образом индексы в базе данных могут помочь запросам быстро найти данные. Если вы новичок в индексах, следующие видео могут быть очень полезны. На самом деле, я многому у них научился.
Основы индекса < br / > Кластерные и некластерные индексы < br / > Уникальные и неуникальные индексы < br / > Преимущества и недостатки индексов
Ну, в общем, индекс - это «B-дерево». Существует два типа индексов: кластерный и некластерный.
Кластерный индекс создает физический порядок строк (он может быть только одним, и в большинстве случаев это также первичный ключ - если вы создаете первичный ключ в таблице, вы также создаете кластерный индекс в этой таблице).
Некластерный индекс также является двоичным деревом, но он не создает физический порядок строк. Таким образом, листовые узлы некластерного индекса содержат PK (если он существует) или индекс строки.
Индексы используются для увеличения скорости поиска. Потому что сложность O (log N). Индексы очень большая и интересная тема. Могу сказать, что создание индексов в большой базе данных иногда является своего рода искусством.
INDEXES
- легко находить данные
UNIQUE INDEX
- дубликаты значений не допускаются
Синтаксис для INDEX
CREATE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);
Синтаксис для UNIQUE INDEX
CREATE UNIQUE INDEX INDEX_NAME ON TABLE_NAME(COLUMN);
INDEX - это метод оптимизации производительности, который ускоряет процесс поиска данных. Это постоянная структура данных, которая связана с таблицей (или представлением), чтобы повысить производительность при получении данных из этой таблицы (или представления).
Поиск по индексу применяется более конкретно, когда ваши запросы включают фильтр WHERE. В противном случае, т. Е. Запрос без WHERE-фильтра выбирает целые данные и процесс. Поиск всей таблицы без INDEX называется сканированием таблицы.
Точная информация для индексов Sql будет найдена в понятной и надежной форме: перейдите по этим ссылкам:
Сначала нам нужно понять, как работает нормальный (без индексации) запрос. Он в основном проходит каждую строку одну за другой, и когда он находит данные, он возвращает. Направьте следующее изображение. (Это изображение было взято из этого [видео][1].)
Таким образом, предположим, что запрос должен найти 50, он должен будет прочитать 49 записей в виде линейного поиска.
Направьте следующее изображение. (Это изображение было взято из этого [видео][1])
Когда мы применяем индексацию, запрос быстро обнаружит данные, не читая каждый из них, просто удалив половину данных в каждом проходе, как двоичный поиск. Индексы mysql хранятся в виде B-дерева, где все данные находятся в листовом узле.
[1]: https://www.youtube.com/watch?v = rtmeNwn4mEg
Если вы используете SQL Server, одним из лучших ресурсов является его собственная Books Online, которая поставляется с установкой! Это первое место, которое я бы назвал для ЛЮБЫХ тем, связанных с SQL Server.
Если это практично "как мне это сделать?«Вроде бы вопросы, тогда StackOverflow был бы лучшим местом для вопросов.
Кроме того, я не возвращался некоторое время, но sqlservercentral.com раньше был одним из лучших сайтов, связанных с SQL Server.
Индекс [index][1] используется по нескольким различным причинам. Основная причина - ускорение выполнения запросов, чтобы вы могли быстрее получать строки или сортировать строки. Другая причина - определение первичного ключа или уникального индекса, который гарантирует, что никакие другие столбцы не имеют одинаковых значений.
[1]: http://en.wikipedia.org/wiki/Index_(база данных)