который является лучшим первичным ключом для хранения адреса веб-сайта и URL-адресов страниц?
Чтобы избежать использования идентификатора autoincremental (который не привязан к данным), я разработал схему с использованием сигнатуры SHA1 URL-адреса в качестве первичного ключа.
Этот подход полезен во многих отношениях: например, мне не нужно читать last_id из базы данных, поэтому я могу подготовить все обновления таблицы, вычисляя ключ, и выполнять реальное обновление в одной транзакции. Отсутствие нарушения ограничений.
В любом случае я прочитал две книги, которые говорят мне, что я ошибаюсь. В "Высокопроизводительной MySQL" говорится, что случайный ключ не подходит для оптимизатора БД. Более того, в каждой книге Джо Селко он говорит, что первичный ключ должен быть частью данных.
Вопрос в том, что естественные ключи для URL-адресов... являются самими URL-адресами. Дело в том, что если для сайта коротко (www.something.com), там нет наложенного ограничения для am URL (см. http://www.boutell.com/newfaq/misc/urllength.html).
Считаю, что мне нужно хранить (и работать с) несколько миллионов из них.
Какой из них лучший ключ? Автоинкрементные идентификаторы, URL-адреса, хэши URL-адресов?