Чи є причина використовувати індекс для дуже маленьких таблиць (до 1000 рядків)?


9

Під час розробки додатків у мене є багато таблиць, які зберігають "невеликий" об'єм даних (зазвичай 10-40 значень, id+ valueі іноді type), які містять атрибути для "об'єктів", наприклад, свіжі / гнилі, червоні / зелені / сині для продуктів.

Я не ставлю ці атрибути до таблиці продуктів, оскільки електронні компоненти не можуть бути свіжими, а кисневий газ не може бути червоним, а таблиці не можуть мати необмежену кількість рядків ...

Для зберігання атрибутів я використовую власні невеликі таблиці, у яких 2-3 поля: idдля посилання, nameдля показу в додатку та колись, typeякщо групи атрибутів в одній категорії.

Первинні "об'єкти" пов'язані з атрибутами через проміжні таблиці "багато-до-багатьох".

Чи є якась причина створити та підтримувати покажчики для тих "малих словників", які мають менше 1000 елементів (як правило, 10-40)?

Моя цільова база даних Oracle, але я сподіваюся, що відповідь постачальника не залежить ...

Я заповнюю - ні, але не маю технічних навичок, щоб виправдати своє заповнення ...

Відповіді:


14

Взагалі так. За відсутності індексу, схема доступу повинна перевіряти кожен рядок, лише щоб побачити, потрібен вам чи ні. Питання не в розмірі таблиці, а в одночасності. Залежно від рівня ізоляції, ваші сканування можуть блокуватись за незареєстрованою транзакцією лише для того, щоб дочекатися розблокування рядків, які в кінцевому підсумку є "нецікавими". Оскільки сканування гарантовано "переглядає" кожен рядок, кожне сканування блокується за будь-яким записом (вставляти, видаляти або оновлювати). У Oracle за замовчуванням використовується ізоляція знімків, яка в цій ситуації нормальна (без блокування), але інші постачальники за замовчуванням щось інше, наприклад. SQL Server за замовчуванням , щоб читати досконалим який робить блок.

При наявності індексу ваша схема доступу буде розглядати лише відповідні рядки (в межах бажаного діапазону клавіш), тому чистий статистичний шанс потрапити в конфлікт блокування значно знижується.


Дякую за пояснення, у мене є додаткове запитання (незважаючи на те, що це вже 3 роки пізніше). А як щодо дуже маленьких таблиць з максимумом 3 чи 4 ряди?
Роб

Окремі невеликі таблиці (розміщені на 1-2 сторінках), швидше за все, будуть відскановані
Рем Русану

@Remus потрібно створити індекс на MySQL
Сінгх Кайлаш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.