Ich habe immer versucht, einen Integer-Primärschlüssel für eine Tabelle zu haben, egal was. Aber jetzt frage ich mich, ob dies immer notwendig ist.
Nehmen wir an, ich habe eine Produkttabelle und jedes Produkt hat eine weltweit eindeutige SKU-Nummer - das wäre eine Zeichenkette mit etwa 8-16 Zeichen. Warum wird dies nicht zur PK? Normalerweise würde ich dieses Feld zu einem eindeutigen Index machen, aber dann ein automatisch inkrementierendes int-Feld als PK verwenden, da ich davon ausgehe, dass dies schneller und einfacher zu pflegen ist und es mir ermöglicht, z. B. die letzten 5 hinzugefügten Datensätze mit Leichtigkeit zu erhalten.
Aber in Bezug auf die Optimierung, vorausgesetzt, ich würde immer nur das Volltextfeld übereinstimmen und als nächstes tun Text übereinstimmende Abfragen (z. B. wie %%) können Sie Jungs denken an alle Gründe, nicht einen Text-basierten Primärschlüssel, wahrscheinlich vom Typ varchar() zu verwenden?
Zum Wohl, imanc