sql >> Databasteknik >  >> RDS >> Mysql

Datatyp för URL

Din fråga lämnar mycket åt fantasin.

För det första måste vi anta att syftet med ditt index är att fungera som en primär nyckel för att undvika dubbletter. Du kommer inte att utveckla en applikation som någonsin säger till en användare, "förlåt, det är ett misstag i din datainmatning på 1800 tecken; den matchar inte, försök igen."

För en annan sak måste vi anta att dessa webbadresser potentiellt har många CGI-parametrar (?param=val¶m=val¶m=val) i dem.

Om dessa antaganden är sanna, är det här vad du kan göra.

  1. Gör din URL-kolumn längre, som en varchar, om du behöver.

  2. Lägg till en SHA-1 hashkolumn till din tabell. SHA-1 hashes består av strängar med 40 tecken (hexsiffror).

  3. Gör den kolumnen till din primära nyckel.

  4. När du lägger in saker i din tabell, använd mySQL SHA1-funktionen för att beräkna hash-värdena.

  5. Använd kommandot INSERT ... ON DUPLICATE KEY UPDATE mySQL för att lägga till rader i din databas.

Detta låter dig hålla dubbletter av webbadresser borta från din databas utan förvirring på ett sätt som skalas upp snyggt.

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



  1. Den maximala körtiden på 30 sekunder har överskridits

  2. 'OPTION SQL_SELECT_LIMIT=DEFAULT'

  3. Hur man konverterar UTC till lokal tid i MySQL

  4. PostgreSQL:FATAL - Peer-autentisering misslyckades för användare (PG::ConnectionBad)