sql >> Databasteknik >  >> RDS >> Mysql

Bästa sättet att hålla TEXT-fältet unikt i MySQL-databasen

Eftersom jag fick frågan i kommentarerna hur jag skulle lösa det här, skriver jag det som ett svar.

Att vara i en sådan situation tyder på misstag i applikationsdesignen. Tänk på vad det betyder.

Du har en text som du inte kan ange längden på i förväg och som kan vara extremt lång (upp till 64k), som du vill behålla unika. Föreställ dig en sådan mängd data uppdelad i separata nycklar, och komponera ett sammansatt index för att skapa unikhet. Det här är vad du försöker göra. För heltal skulle detta vara ett index på 16 000 heltal, sammanfogade i ett sammansatt index.

Tänk vidare på att CHARACTER-typfält (CHAR, VARCHAR, TEXT) ligger bakom tolkningen genom kodning, vilket ytterligare komplicerar problemet.

Jag skulle starkt rekommendera att dela upp data på något sätt. Detta frigör inte bara DBMS från att inkludera tecken med variabel längd, utan kan också ge en viss möjlighet att generera sammansatta nycklar över delar av data. Kanske kan du till och med hitta en bättre lagringslösning för dina data.

Om du har frågor skulle jag föreslå att du lägger upp tabellen och/eller databasstrukturen och förklarar vilka logiska data som TEXT-fältet innehåller och varför du tror att det måste vara unikt.



  1. Olaglig blandning av sorteringar för drift för datum/tid jämförelse

  2. Hur delar man en sträng i PL/SQL?

  3. Hur man lagrar en fil i en mysql-databas med blob

  4. Konvertera tidsstämpel datatyp till unix tidsstämpel Oracle