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