sql >> Database >  >> RDS >> Mysql

Beste manier om het TEXT-veld uniek te houden in de MySQL-database

Omdat mij in de reacties werd gevraagd hoe ik dit zou oplossen, zal ik het als reactie schrijven.

Als u zich in een dergelijke situatie bevindt, suggereert dit fouten in het applicatieontwerp. Bedenk wat dat betekent.

Je hebt een tekst waarvan je de lengte niet van tevoren kunt specificeren, en die extreem lang kan zijn (tot 64k), waarvan je de uniciteit wilt behouden. Stel je voor dat zo'n hoeveelheid gegevens in afzonderlijke sleutels wordt opgesplitst en een samengestelde index wordt samengesteld om uniciteit te genereren. Dit is wat je probeert te doen. Voor gehele getallen zou dit een index van 16.000 gehele getallen zijn, samengevoegd in een samengestelde index.

Bedenk verder dat velden van het CHARACTER-type (CHAR, VARCHAR, TEXT) ten grondslag liggen aan de interpretatie door codering, wat het probleem nog ingewikkelder maakt.

Ik zou het ten zeerste aanbevelen om de gegevens op de een of andere manier op te splitsen. Dit bevrijdt de DBMS niet alleen van het opnemen van karakterblokken met variabele lengte, maar kan ook enige mogelijkheid bieden om samengestelde sleutels over delen van de gegevens te genereren. Misschien vindt u zelfs een betere opslagoplossing voor uw gegevens.

Als je vragen hebt, raad ik aan om de tabel- en/of databasestructuur te posten en uit te leggen welke logische gegevens het TEKST-veld bevat en waarom je denkt dat het uniek moet zijn.



  1. Hoe meerdere kolommen als één te combineren en op te maken met aangepaste tekenreeksen?

  2. Varchar-veld numeriek sorteren in MySQL

  3. Combineer twee mysql-query's in één

  4. De Oracle Warehouse Builder 11g R2-client installeren