Таблицы базы данных только с одним индексом ... плохая идея? - PullRequest
4 голосов
/ 18 января 2010

Если язык программирования допускает создание таблиц базы данных, но допускает использование только одного поля в качестве индекса ... как это будет ограничивать? Я не настоящий программист баз данных, поэтому мне интересно, можно ли использовать такую ​​систему в качестве основы для серьезных баз данных или она будет всего лишь игрушкой.

Ответы [ 5 ]

4 голосов
/ 18 января 2010

Это было бы крайне ограниченным. Я видел до 11 индексов в таблицах, с которыми я имел дело, и у каждого из них есть цель. Без сомнения, есть случаи с гораздо большим.

Как минимум в базе данных первичный ключ и все внешние ключи будут (или должны быть) проиндексированы.

Кроме того, индексы обычно охватывают несколько столбцов.

2 голосов
/ 18 января 2010

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

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

1 голос
/ 18 января 2010

Это зависит. Беркли DB, например имеет только один ключ и очень полезен для своих целей.

Реляционная БД, с другой стороны, должна дать вам возможность определить столько индексов, сколько вам нужно (как упоминалось выше, запросы на внешний ключ будут страдать от очень низкой производительности в противном случае)

0 голосов
/ 18 января 2010

Это зависит от того, что вы собираетесь делать с данными.

Если вы выполняете поиск и выбираете на основе неиндексированного поля, процесс будет медленным. Аналогично, если вы выполняете операции объединения или слияния на основе неиндексированного поля, вы получаете замедление.

Если в таблице миллионы строк, это может быть слишком медленно, чтобы быть приемлемым.

Ограничение доступа только одним полем в некоторых ситуациях может быть слишком ограничивающим.

Опять же, это зависит от того, что вы собираетесь делать с данными.

0 голосов
/ 18 января 2010

Обычно: индекс предназначен для ускорения поиска в базе данных: как в книге, вы ищете слово «компьютер», просматриваете (алфавитный!) Индекс и находите все номера страниц.

Если (очень гипотетически) создать базу данных, которая оптимизировала время поиска без использования индексов: то такая база данных, содержащая только один индекс, не является плохой идеей.

Но если вы говорите о основной базе данных, то я бы сказал: зависит от содержимого.

...