Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najlepszy sposób na zachowanie unikatowości pola TEKSTOWEGO w bazie danych MySQL

Jak zostałem zapytany w komentarzach, jak bym to rozwiązał, napiszę to jako odpowiedź.

Znajdowanie się w takiej sytuacji sugeruje błędy w projekcie aplikacji. Zastanów się, co to oznacza.

Masz tekst, którego długości nie możesz określić z góry, a który może być bardzo długi (do 64k), którego unikatowość chcesz zachować. Wyobraź sobie, że taka ilość danych jest podzielona na oddzielne klucze i tworzy złożony indeks, aby wygenerować unikatowość. To właśnie próbujesz zrobić. W przypadku liczb całkowitych byłby to indeks złożony z 16000 liczb całkowitych połączonych w indeks złożony.

Zastanów się dalej, że pola typu CHARACTER (CHAR, VARCHAR, TEXT) podlegają interpretacji przez kodowanie, co dodatkowo komplikuje problem.

Gorąco polecam jakoś podzielić dane. To nie tylko uwalnia DBMS od włączania bloków znaków o zmiennej długości, ale także może dać pewną możliwość generowania kluczy złożonych na częściach danych. Może nawet znajdziesz lepsze rozwiązanie do przechowywania danych.

Jeśli masz pytania, sugeruję opublikowanie tabeli i/lub struktury bazy danych oraz wyjaśnienie, jakie dane logiczne zawiera pole TEKST i dlaczego uważasz, że powinno być unikalne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można wykryć wartości null z JSON_EXTRACT

  2. mysql wybierz z pętlą while

  3. Problemy z loterią PHP z wieloma zwycięzcami

  4. PHP - Importuj plik CSV do bazy danych mysql za pomocą funkcji LOAD DATA INFILE

  5. Python:Jak uzyskać czas z obiektu datetime.timedelta?