Каковы недостатки текстового первичного индекса - PullRequest
2 голосов
/ 26 мая 2010

Я работаю над сайтом и хочу создавать красивые URL-адреса. URL-адреса для определенных расширений, которые я собираюсь сделать. Например, я хочу, чтобы URL был таким:

http://www.mydomain.com/extensions/tester
http://www.mydomain.com/extensions/worker
http://www.mydomain.com/extensions/this-is-a-really-long-ext-name

Таким образом, тестер, работник и т. Д. - это все записи в базе данных.

Теперь мой главный вопрос: как лучше всего создать базу данных и выполнить запросы для этого? Моя первая мысль - просто использовать часть имени в качестве основного индекса.

ПРИМЕЧАНИЕ: все расширения будут иметь уникальное имя.

Тогда запрос в sql будет 'SELECT * FROM ? WHERE name = last-part-of-uri'

Каковы недостатки этого, я предполагаю, что индексы будут очень длинными. Или лучше использовать первичный индекс для поля, а затем просто обычный индекс для имени.

Основной индекс не будет служить никакой реальной цели, может быть, только в бэкэнде.

Ответы [ 3 ]

4 голосов
/ 26 мая 2010

Главное достоинство числового индекса - это абстрактность.
Таким образом, вы всегда можете переименовать значимую часть, но сохранить уникальный индекс.
Вот почему, я думаю, SO использует числовой первичный индекс для вопросов:
https://stackoverflow.com/questions/2914909/what-are-the-downsides-of-a-text-based-primary-index

2 голосов
/ 26 мая 2010

Основным недостатком является то, что вам нужно будет обновить ваш первичный ключ, когда вы хотите переименовать часть URL-адреса. Вам будет очень интересно отслеживать зависимости.

0 голосов
/ 15 января 2012

Зависит от вашего сайта и структуры БД. Если важная часть имеет четкие ссылки без случайных чисел, как ваш вопрос. Будет лучше иметь текст в первичном ключе. А также вы не можете использовать дубликаты заголовков для ваших URL. Например, в SO вопросы могут иметь одинаковые заголовки.

Если SEO важнее для вас, лучше иметь первичный индекс для текстовых сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...