Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datentyp für URL

Ihre Frage überlässt viel der Fantasie.

Zum einen müssen wir davon ausgehen, dass der Zweck Ihres Index darin besteht, als Primärschlüssel zu dienen, um Duplikate zu vermeiden. Sie werden keine Anwendung entwickeln, die jemals zu einem Benutzer sagt:"Entschuldigung, es gibt einen Fehler in Ihrer 1800-Zeichen-Dateneingabe; es stimmt nicht überein, bitte versuchen Sie es erneut."

Zum anderen müssen wir davon ausgehen, dass Ihre URLs möglicherweise viele CGI-Parameter (?param=val¶m=val¶m=val) enthalten.

Wenn diese Annahmen zutreffen, können Sie Folgendes tun.

  1. Verlängern Sie Ihre URL-Spalte ggf. als Varchar.

  2. Fügen Sie Ihrer Tabelle eine SHA-1-Hash-Spalte hinzu. SHA-1-Hashes bestehen aus Zeichenfolgen mit 40 Zeichen (Hexziffern).

  3. Machen Sie diese Spalte zu Ihrem Primärschlüssel.

  4. Wenn Sie etwas in Ihre Tabelle einfügen, verwenden Sie die mySQL-SHA1-Funktion, um die Hash-Werte zu berechnen.

  5. Verwenden Sie den mySQL-Befehl INSERT ... ON DUPLICATE KEY UPDATE, um Ihrer Datenbank Zeilen hinzuzufügen.

Auf diese Weise können Sie doppelte URLs ohne Verwirrung aus Ihrer Datenbank fernhalten, und zwar auf eine Weise, die sich gut skalieren lässt.

http://dev.mysql.com/doc /refman/5.1/en/insert-on-duplicate.html