ця відповідь є моєю особистою думкою, я використовую свою математичну логіку для відповіді
друге питання стосувалося межі, де зупинитися. Спочатку давайте зробимо математичний розрахунок, припустимо, у нас N рядків з L полями, якщо індексувати всі поля, ми отримаємо L нових таблиць індексів, де кожна таблиця буде сортована у значущим чином дані поля індексу, на перший погляд, якщо ваша таблиця має вагу W, вона стане W * 2 (1 тера стане 2 тера), якщо у вас є 100 великих таблиць (я вже працював у проекті, де номер таблиці був близько 1800 таблиці) Ви витратите 100 разів більше місця (100 тера), це далеко не розумно.
Якщо ми будемо застосовувати індекси у всіх таблицях, нам доведеться подумати про оновлення індексу, якщо це було одне тригер оновлення, оновлення всіх індексів - це виділення всіх не упорядкованих еквівалентів у часі
з цього я роблю висновок, що у цьому сценарії ви маєте на увазі, що якщо ви втратите цей час, то краще втратити його у вибраному чи оновленому, оскільки якщо ви виберете поле, яке не індексується, ви не спровокуєте іншого вибору на всіх полях, які є не індексується
що індексувати?
іноземні ключі: базується на
первинний ключ: Я ще не впевнений у цьому, можливо, якщо хтось прочитає це, може допомогти у цій справі
інші поля: перша природна відповідь - це половина решти файлів, чому: якщо ви індексуєте більше, ви не далеко від найкращої відповіді, якщо індексувати менше, ви також не далеко, тому що ми знаємо, що жоден індекс не поганий і все індексується теж погано.
З цього 3 пункту я можу зробити висновок, що якщо у нас є поля L, що складаються з клавіш K, то межа має бути дещо ближчим ((L-K)/2)+K
до L / 10
ця відповідь ґрунтується на моїй логіці та особистих підказках