2012-03-24 15 views
0

Ich bin ein Anfänger mit mysql und PHP, und brauche etwas Hilfe :)Mysql. Sollte ich ID verwenden?

Ich habe eine Tabelle namens "match_tabel" mit "id" als Primärschlüssel (auto_increment). Ich habe den ID-Schlüssel wegen der Leistung eingegeben. Da die ID jedoch für jede neue Übereinstimmung erhöht wird, wird die ID nach einiger Zeit ziemlich groß.

Übereinstimmungen werden ebenfalls gelöscht, sobald sie abgeschlossen sind.

Angenommen, es wurden 100.000 Übereinstimmungen gefunden, die alle vollständig sind (aus der Datenbank gelöscht). Die nächste Übereinstimmung erhält dann die ID "100,001", selbst wenn es die einzige Zeile in der Datenbank ist.

Meine Frage ist. Soll ich ID verwenden? Dank

EDIT

Für jedes Spiel gibt es einen eindeutigen Schlüssel. Wenn ich eine Übereinstimmung erhalte, suche ich nach dem eindeutigen Schlüssel ...

+0

Ja ----------- –

+0

Was genau brauchen Sie? Was ist dein Problem? Hast du überhaupt welche? –

+3

Ja, Sie sollten die ID verwenden und ja, es ist normales Verhalten, dass MySQL verlorene Zahlen nicht wieder verwendet, indem Sie eine DELETE-Anweisung ausgeben. Machen Sie sich keine Sorgen darüber, dass Ihnen die Zahlen ausgehen. Wenn Sie Ihre ID als "BIGINT" angeben, dauert es einige tausend Jahre, bis Ihnen die Zahlen ausgehen. –

Antwort

2

Ja, Sie verwenden immer eine ID (oder einen anderen Namen für einen Primärschlüssel, normalerweise automatisch inkrementiert). Andernfalls haben Sie keine Möglichkeit, auf eine bestimmte Zeile zu verweisen, und es ist auch nicht möglich, Daten aus mehreren Tabellen zu beziehen.

+0

Für jedes Spiel gibt es einen eindeutigen Schlüssel. Wenn ich ein Match bekomme, suche ich nach diesem einzigartigen Schlüssel ... – BlackMouse

1

Ein Primärschlüssel AUTO_INCREMENT ist einem anderen eindeutigen Schlüssel vorzuziehen;

a) einige andere Schlüssel wird vermutlich erzeugt werden könnte mit PHP anstatt innerhalb MySQL und so potenziell Konflikt mit einem bereits vorhandenen eindeutigen Schlüssel (je nachdem, wie zuverlässig Ihre Methode ist der Wert der Erzeugung) und

b) mysql_insert_id() funktioniert nur für eine AUTO_INCREMENT-Spalte.