sql >> Database teknologi >  >> RDS >> Mysql

Bedste måde at holde TEKST-feltet unikt i MySQL-databasen

Da jeg blev spurgt i kommentarerne, hvordan jeg ville løse dette, vil jeg skrive det som et svar.

At være i en sådan situation tyder på fejl i applikationsdesignet. Overvej, hvad det betyder.

Du har en tekst, som du ikke kan angive længden på forhånd, og som kan være ekstremt lang (op til 64k), som du ønsker at bevare unikheden af. Forestil dig en sådan mængde data opdelt i separate nøgler og komponere et sammensat indeks for at skabe unikhed. Det er det, du prøver at gøre. For heltal ville dette være et indeks på 16000 heltal, samlet i et sammensat indeks.

Overvej yderligere, at CHARACTER-typefelter (CHAR, VARCHAR, TEXT) ligger til grund for fortolkning ved kodning, hvilket yderligere komplicerer problemet.

Jeg vil varmt anbefale at dele dataene op på en eller anden måde. Dette frigør ikke kun DBMS fra at inkorporere tegnblokke med variabel længde, men det kan også give en vis mulighed for at generere sammensatte nøgler over dele af dataene. Måske kunne du endda finde en bedre lagringsløsning til dine data.

Hvis du har spørgsmål, vil jeg foreslå, at du poster tabellen og/eller databasestrukturen og forklarer, hvilke logiske data TEXT-feltet indeholder, og hvorfor du mener, det skal være unikt.



  1. Er det muligt at flytte kolonnedata nedad i en MySQL-tabel?

  2. Der skelnes mellem store og små bogstaver i restriktioner "er lig med id" i Dvale-restriktioner

  3. Ikke unik tabel/alias

  4. MySQL Vælg specifik kolonne