этот ответ основан на моем личном мнении, я использую свою математическую логику, чтобы ответить
второй вопрос был о границе, где остановиться. Сначала позвольте выполнить некоторые математические вычисления, предположим, что у нас есть N строк с L полями в таблице, если мы проиндексируем все поля, мы получим L новых индексных таблиц, где каждая таблица будет отсортирована в содержательно данные поля индекса, на первый взгляд, если ваша таблица имеет вес W, он станет W * 2 (1 тера станет 2 тера), если у вас есть 100 больших таблиц (я уже работал в проекте, где номер таблицы был arround 1800 table) вы потратите в 100 раз больше этого места (100 тера), это далеко не разумно.
Если мы будем применять индексы во всех таблицах, нам придется подумать об обновлениях индексов, если один триггер обновления, все индексы обновляются, это выбор всех неупорядоченных эквивалентов по времени
из этого я прихожу к выводу, что в этом сценарии, если вы проиграете, на этот раз предпочтительнее потерять его ни при выборе, ни при обновлении, потому что если вы выберете поле, которое не проиндексировано, вы не вызовете другой выбор для всех полей, которые не индексируется
что индексировать?
внешние ключи: обязательно на основе
первичный ключ: я еще не уверен, может быть, если кто-то прочитает это, может помочь в этом случае
другие поля: первый естественный ответ - это половина оставшихся полей. Почему: если вы должны проиндексировать больше, вы не далеко от лучшего ответа, если вы должны индексировать меньше, вы тоже не далеко, потому что мы знаем, что нет плохих индексов и все проиндексированы тоже плохо.
из этих 3 пунктов я могу сделать вывод, что если у нас есть L полей, состоящих из K ключей, предел должен быть где-то около ((L-K)/2)+K
L / 10
этот ответ основан на моей логике и личных ценах