Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Индексы ускоряют запросы SELECT, поскольку индексы сортируются по определению. Кроме того, индекс UNIQUE обеспечивает ограничение того, что значение этого столбца (или комбинация значений связанных столбцов) существует только один раз (то же самое относится к PRIMARY, но PRIMARY может существовать только один раз для таблицы в отличие от ключа UNIQUE).

Индексы - это компромисс: они значительно ускоряют запросы SELECT (когда используемые столбцы имеют индекс INDEX), но они делают, что таблица MySQL потребляет больше места и требует больше времени при изменении таблицы через INSERT/UPDATE/DELETE.

Ответ 2

Индексы похожи на индекс книги. Представьте, что у вас была книга рецептов, и вы хотели узнать, как сделать омлет, вы просто перейдете на задний план, найдите слово и его номер страницы и пропустите этот номер страницы. Теперь представьте, что у вас нет индекса, и вам пришлось искать по 400 страниц рецептов, какой кошмар!

Индексы имеют несколько типов Первичный ключ, индекс, уникальный, полный текст

Первичный ключ считается вашим основным индексом, первое место mysql отправляется на поиск записи. Большинство людей используют для этого целое число auto incrementing integer, поскольку оно обычно уникально для каждой строки.

Индексы считаются вашими вторичными первичными ключами, вы помещаете их в поля, которые вы хотите быстро найти.

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

Наконец, Fulltext - это специальный индекс, используемый только механизмом хранения mysql MyISAM, он используется для поиска ваших записей с использованием человеческих фраз. не вдаваясь в подробности своей собственной поисковой системы mysqls, более продвинутой версии команды LIKE sql.

Например, если бы я искал "яйца и масло", полный текст искал бы записи, содержащие яйца, масло или и то, и другое. где LIKE будет просто искать строки, содержащие "яйца и масло"

Надеюсь, это поможет, сайт mysql содержит много информации по этому вопросу, но это дает вам общий смысл.

Счастливое кодирование:)

Ответ 3

Индексы используются для двух вещей:

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

Подробнее об индексах здесь http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html или лучше купить подходящие книги по дизайну базы данных.

Что касается вашего второго вопроса, посмотрите на http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html.

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

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

Ответ 4

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

Используя TEXT в тех случаях, когда вам это не нужно, это плохо. Лучше ограничить пользователей несколькими полями, т.е. Заголовком и URL-адресом, поскольку у вас есть указатель на URL-адрес. И я не думаю, что вы можете использовать индекс для столбцов типа TEXT. Я не думаю, что FULLTEXT -индекс на url - это то, что вы хотите.

Я бы рекомендовал вам ознакомиться с базами данных во вводном тексте или на веб-сайте.

Ответ 5

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

Популярная стратегия в приложениях с очень высокой громкостью/высокой производительностью состоит в том, чтобы иметь две базы данных. Один, который оптимально индексируется для быстрого поиска, а другой, который имеет очень мало индексов для быстрых вставок. Единственная проблема заключается в том, что вы теряете данные в режиме реального времени, когда база данных извлечения еще не синхронизируется с базой вставки.

Существуют также два разных типа индексов. Кластерные и некластеризованные индексы. Если я не ошибаюсь, в MySQL первичные ключи кластеризованы, а все остальные индексы не кластеризованы. Хорошая статья о различии здесь. Он охватывает SQL Server, но концепция должна быть одинаковой.

Я не много работал с MySQL, но из того, что я могу видеть в Интернете, FULLTEXT предоставляет способ поиска с использованием полнотекстового поиска на естественном языке. В основном, в запросе вы предоставите условия для поиска столбца с полным индексированием текста, и он отбросит все результаты. Вот несколько статей, которые я нашел по теме, которую вы можете найти полезной.
Документы MySQL по полнотекстовому поиску
Статья 1
Статья 2

Ответ 6

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

Ответ 7

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

Теперь предположим, что у вас есть папка маниле для каждого человека. У карты могут быть подробные медицинские записи и т.д. Ваша база данных может не держать эти карты в порядке - возможно, она просто добавляет новые папки в конец компакт-диска. Но он сохраняет отсортированный "индекс", так что если вы посмотрите SSN, он может точно указать, где находится соответствующая папка.

В этом примере SSN используется как первичный ключ. Это приятно, если оно уникально, но даже если оно не уникально, оно все еще может ускорить процесс.