Я постійно бачу, як люди кажуть, що індекси сповільнюються update
, delete
і insert
. Це використовується як вислів ковдри, як би абсолютне.
Налаштовуючи свою базу даних для підвищення продуктивності, я постійно стикаюся з цією ситуацією, яка, здається, суперечить цьому правилу для мене, і ніде я не можу знайти когось сказати чи пояснити інакше.
У SQL Server, і я вважаю / припускаю більшість інших СУБД, ваші індекси створюються на основі визначених вами стовпців. Вставки та видалення завжди впливатимуть на весь рядок, тому немає ніякого способу, що вони не вплинуть на індекс, але оновлення здаються дещо унікальнішими, вони можуть впливати лише на певні стовпці.
Якщо у мене є стовпці, які не включені до жодного індексу, і я їх оновлюю, чи вони сповільнені лише тому, що я маю індекс у інших стовпцях цієї таблиці?
Наприклад, скажіть, що в моїй User
таблиці я маю один або два індекси, первинним ключем яких є стовпець Ідентифікація / Автоматичне збільшення та, можливо, інший у якомусь стовпчику іноземного ключа.
Якщо я оновлюю стовпець без індексу безпосередньо на ній, наприклад скажімо, їх номер телефону чи адресу, чи це оновлення сповільнено, оскільки в інших таблицях в будь-якій ситуації є індекси в цій таблиці? Стовпці, які я оновлюю, не містяться в індексах, тому логічно, індекси не слід оновлювати, чи не так? Якщо що-небудь, я думаю, що вони прискорені, якщо я використовую індекси у пункті WHERE.
so there is no way they will not affect the index
крім відфільтрованих індексів ...