можно ли использовать столбец, отличный от первичного ключа, в качестве индекса, и есть ли какие-либо недостатки для этого?MySQL: индекс в столбце непервичного ключа
ответ
Вы можете пойти на альтернативный как всегда есть
Преимущества MySQL Индексы Вообще говоря, MySQL индексации в базе данных дает три преимущества: оптимизация
- запросов: Индексы делают поисковые запросы гораздо Быстрее.
- Уникальность: индексы, такие как индекс первичного ключа и уникальный индекс, помогают избежать дублирования данных строки.
- Поиск текста: Полнотекстовые индексы в MySQL версии 3.23.23, пользователи имеют возможность оптимизировать поиск даже в больших количествах текста, размещенного в любом поле, индексированном как таковое.
Недостатки индексов MySQL Когда индекс создается на столбце (ы), MySQL также создает отдельный файл, который сортируется, и содержит только поле (s) вы заинтересованы в сортировке по ,
Во-первых, индексы занимают дисковое пространство. Обычно использование пространства не имеет значения, но из-за создания индекса для каждого столбца в каждой возможной комбинации индексный файл будет расти намного быстрее, чем файл данных. В случае, когда таблица имеет большой размер таблицы, индексный файл может достигать максимального размера файла операционной системы.
Во-вторых, индексы замедляют скорость написания запросов, таких как INSERT, UPDATE и DELETE. Поскольку MySQL должен внутренне поддерживать «указатели» на вставленные строки в фактическом файле данных, поэтому в случае вышеуказанных запросов записи есть цена исполнения, потому что каждый раз, когда изменяется запись, индексы должны обновляться. Однако вы можете написать свои запросы таким образом, чтобы не приводить к очень заметной деградации производительности.
Абсолютно. Это помогает с SELECT ... WHERE
, где условие не является вашим основным ключом. Однако будьте осторожны, не индексируйте слишком много - только индексируйте то, что вам нужно.
есть большая часть производительности с использованием нескольких индексов? И я не имею в виду ни один индекс, состоящий из нескольких столбцов, а несколько индексов, каждый из которых состоит из одного столбца – Karl
Многие из моих таблиц имеют вторичные индексы помимо первичного ключа. Вы можете создавать несколько индексов для каждой таблицы, но в MySQL для каждого запроса в одном запросе используется только один индекс.
Какие индексы вы должны создать? Это зависит от ваших запросов. См. Презентацию, которую я сделал на этой неделе, MENTOR Your Indexes.
Добавление дополнительных индексов добавляется постепенно к накладным расходам при вставке/обновлении/удалении. Когда вы меняете данные, РСУБД должна поддерживать индексы синхронно. Но почти всегда верно, что правильные индексы дают вашим избранным запросам так много преимуществ, что они более чем оправдывают накладные расходы на их поддержание.
есть много потери производительности с помощью нескольких индексов?
В книге «Искусство SQL» автор проверил это и обнаружил, Но, что интересно, оно не растет линейно. Дополнительные накладные расходы второго, третьего и т. Д. Индексов снижаются в грубой логарифмической кривой. То есть два индекса не в два раза дороже одного индекса. Четыре индекса не в два раза дороже двух индексов.
- 1. Обновление уникального непервичного ключа
- 2. Внутренние соединения с использованием Hibernate Criteria на столбце непервичного ключа
- 3. Как поймать исключение непервичного ключа
- 4. Предотвращение дублирования столбца непервичного ключа
- 5. некластеризованный индекс в столбце первичного ключа?
- 6. Не удается добавить столбец идентификации непервичного ключа
- 7. Создать внешний ключ для непервичного ключа?
- 8. MySQL, похоже, игнорирует индекс в столбце datetime
- 9. индекс mysql в столбце типа int
- 10. Можно ли ссылаться на столбцы непервичного ключа из внешнего ключа?
- 11. AUTO-INCREMENT в столбце непервичного ключа с использованием библиотеки миграции phinx
- 12. Использование SQLAlchemy ORM для непервичного ключа, уникальный, автоматически увеличивающий id
- 13. Автоматическое увеличение непервичного ключа (SQL Server 2014) в C#
- 14. Как присоединиться к таблицам в столбцах непервичного ключа?
- 15. Ассоциация не импортирована в конструктор EF4 для непервичного ключа
- 16. Обновление Cascade для непервичного ключа в SQL Server 2008
- 17. Автоматическое увеличение поля непервичного ключа в Ruby on Rails
- 18. Использование непервичного ключа для свойства объекта в GORM?
- 19. Mysql Set Значение NULL в столбце внешнего ключа
- 20. Индекс/Тип ключа Индекс, который является уникальным Vs Индекс/Тип ключа Уникальный ключ
- 21. ASP.MVC db Find(), но с параметром непервичного ключа
- 22. Установление отношений родитель-потомок с использованием поля непервичного ключа
- 23. Linq и структура сущности, отличные от значения непервичного ключа
- 24. Внешние ключи структуры Entity Framework для полей непервичного ключа
- 25. Что такое идиоматический способ запроса по атрибуту непервичного ключа?
- 26. NHibernate Выберите данные из таблицы на основе столбца непервичного ключа
- 27. Использование C# Guid как уникального поля непервичного ключа
- 28. JPA - отношение @OneToOne для поля непервичного ключа не работает
- 29. Как создать индекс в столбце Time_Stamp в MySQL?
- 30. Возможно ли сделать индекс в столбце псевдонима в MySQL?
О чем вы говорите? Индексирование на другие столбцы - большое дело. –
@ daniel «Вы можете пойти на альтернативу», это не большое дело, но оно также зависит от требования? проверьте обновление один раз. –