То, сколько индексирует база данных, является слишком многими?

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

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

Пространство не является беспокойством; у нас есть диск RAID на 4 терабайта, которого мы используем только небольшую часть. Однако я волнуюсь по поводу возможных потерь производительности наличия слишком многих индексов. Поскольку те индексы должны быть обновлены каждый раз, когда строка добавлена, удалена или изменена, я предполагаю, что это была бы плохая идея иметь десятки индексов на единственной таблице.

Таким образом, сколько индексов считают слишком многими? 10? 25? 50? Или я должен просто покрыть действительно, действительно общие и очевидные случаи и проигнорировать все остальное?

108
задан Eli Courtwright 26 September 2008 в 18:50
поделиться

2 ответа

Я провел несколько простых тестов на моем реальном проекте и реальной базе данных MySql. Я уже отвечал в этой теме: Сколько стоит индексирование нескольких столбцов db?

Но я думаю, будет лучше, если я процитирую это здесь:

Я провел несколько простых тестов, используя свой настоящий {{1 }} и настоящая база данных MySql.

Мои результаты: добавление среднего индекса (1-3 столбца в индексе) в таблицу - замедляет вставку на 2,1%. Итак, если вы добавите 20 индексов, ваши вставки будут медленнее на 40-50%. Но ваш выбор будет в 10–100 раз быстрее.

Так можно ли добавлять много индексов? - Это зависит :) Я дал вам свои результаты - решать вам!

6
ответ дан 24 November 2019 в 03:31
поделиться

Sql-сервер предоставляет вам несколько хороших инструментов, позволяющих увидеть, какие индексы фактически используются. Эта статья, http: / /www.mssqltips.com/tip.asp?tip=1239, дает вам несколько запросов, которые позволяют лучше понять, сколько используется индекс, а не сколько он обновляется.

1
ответ дан 24 November 2019 в 03:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: