Я всегда пытался иметь целочисленный первичный ключ в таблице, несмотря ни на что. Но теперь я спрашиваю, всегда ли это необходимо.
Допустим, у меня есть таблица продуктов, и у каждого продукта есть уникальный глобальный номер SKU - это будет строка, скажем, 8-16 символов. Почему бы не сделать это ПК? Как правило, я бы сделал это поле уникальным индексом, но затем имел бы автоматически увеличивающееся поле int в качестве PK, так как я предполагал, что это будет быстрее, проще в обслуживании и позволит мне с легкостью добавлять последние 5 записей.
Но с точки зрения оптимизации, если предположить, что я когда-либо сопоставляю только полнотекстовое поле, а затем буду выполнять запросы на сопоставление текста (например, %%), можете ли вы подумать о каких-либо причинах не использовать первичный ключ на основе текста, чаще скорее всего типа varchar ()?
Ура,
imanc