Что такое индекс в SQL?

Что такое индекс в SQL? Можете ли вы объяснить или ссылаться, чтобы понять ясно?

где я должен использовать индекс?

11 ответов


индекс используется для ускорения поиска в базе данных. У MySQL есть хорошая документация по этому вопросу (которая также актуальна для других SQL-серверов): http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

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

индекс также может быть , что означает, что вы не можете иметь повторяющиеся значения в этом столбце, или PRIMARY KEY, который в некоторых двигателях хранения определяет, где в файле базы данных хранится значение.

в MySQL вы можете использовать EXPLAIN перед SELECT оператор, чтобы увидеть, будет ли ваш запрос использовать любой индекс. Это хорошее начало для устранения проблем с производительностью. Подробнее здесь: http://dev.mysql.com/doc/refman/5.0/en/explain.html


кластеризованный индекс похож на содержимое телефонной книги. Вы можете открыть книгу на Хилдич, Дэвид и найти всю информацию для всех права 'Хилдич рядом друг с другом. Здесь ключи для кластеризованного индекса (lastname, firstname).

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

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

некластеризованный индекс отличается тем, что у вас может быть много из них, а затем они указывают на данные в кластеризованном индексе. У вас может быть, например, некластеризованный индекс в задней части телефонной книги, который набирается (город, адрес)

представьте себе, если бы вам пришлось искать по телефонной книге всех людей, которые живут в "Лондоне" - только с кластеризованными индекс вам придется искать каждый элемент в телефонной книге, так как ключ кластеризованного индекса включен (фамилия, имя), и в результате люди, живущие в Лондоне, разбросаны случайным образом по всему индексу.

Если у вас есть некластеризованный индекс на (город), то эти запросы могут быть выполнены гораздо быстрее.

надеюсь, что это поможет!


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

Здесь


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

в SQL Server a кластерный index определяет физический порядок данных в таблице. Для каждой таблицы может быть только один кластеризованный индекс (кластеризованный индекс-это таблица). Все остальные индексы таблицы называются некластеризованными.


индексы все о поиске данных. Индексы в базе данных аналогичны индексам, которые вы найдете в книге. Если у книги есть указатель, и я прошу вас найти главу в этой книге,вы можете быстро найти ее с помощью указателя. С другой стороны, если в книге нет индекса, вам придется потратить больше времени на поиск главы, просматривая каждую страницу от начала до конца книги. Аналогичным образом индексы в базе данных могут помочь запросы для быстрого поиска данных. Если вы новичок в индексах, следующие видео могут быть очень полезны. Я многому у них научился.

Основы Индекс
кластеризованные и некластеризованные индексы
уникальные и не уникальные индексы
преимущества и недостатки индексов


Ну вообще индекс - это B-tree. Существует два типа индексов: кластеризованные и некластеризованные.

кластерный index создает физический порядок строк (он может быть только один, и в большинстве случаев это также первичный ключ - если вы создаете первичный ключ в таблице, вы также создаете кластеризованный индекс в этой таблице).

некластеризованный index также является двоичным деревом, но не создает физического порядка строк. Таким образом, листовые узлы некластеризованных индекс содержит 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 filter. Иначе-я.e, запрос без WHERE-filter выбирает все данные и процесс. Поиск всей таблицы без индекса вызывается Сканирование таблицы.

вы найдете точную информацию для Sql-индексов ясным и надежным способом: перейдите по следующим ссылкам:

  1. для понимания cocnept-мудрый: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Overview-and-Optimizations.html
  2. для реализации мудрого понимания: http://dotnetauthorities.blogspot.in/2013/12/Microsoft-SQL-Server-Training-Online-Learning-Classes-INDEX-Creation-Deletetion-Optimizations.html

Если вы используете SQL Server, одним из лучших ресурсов является его собственная книга онлайн, которая поставляется с установкой! Это 1-е место, на которое я бы ссылался для любых связанных с SQL Server тем.

Если это практично ", как я должен делать это?- ну, типа вопросов, тогда "Стековерфлоу" было бы лучше.

кроме того, я не возвращался некоторое время, но sqlservercentral.com раньше был одним из лучших сайтов, связанных с SQL Server.


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


Сначала нам нужно понять, как работает обычный (без индексирования) запрос. Он в основном пересекает каждую строку один за другим, и когда он находит данные, он возвращает. Обратитесь к следующему изображению. (Это изображение было взято из этого видео.)

Without indexing Поэтому предположим, что запрос должен найти 50, он должен будет прочитать 49 записей как линейный поиск.

см. На следующем рисунке. (Это изображение было взято из этого видео)

enter image description here

когда мы применяем индексацию, запрос быстро узнает данные, не читая каждый из них, просто исключив половину данных в каждом обходе, как двоичный поиск. Индексы mysql хранятся как B-дерево, где все данные находятся в листовом узле.