Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-добрият начин да запазите полето TEXT уникално в базата данни на MySQL

Тъй като ме попитаха в коментарите как да реша това, ще го напиша като отговор.

Попадането в такава ситуация предполага грешки в дизайна на приложението. Помислете какво означава това.

Имате текст, чиято дължина не можете да посочите предварително и който може да бъде изключително дълъг (до 64k), чиято уникалност искате да запазите. Представете си такова количество данни, разделени на отделни ключове и съставяне на композитен индекс за генериране на уникалност. Това е, което се опитвате да направите. За цели числа това ще бъде индекс от 16 000 цели числа, обединени в съставен индекс.

Помислете допълнително, че полетата с тип CHARACTER (CHAR, VARCHAR, TEXT) са в основата на интерпретацията чрез кодиране, което допълнително усложнява проблема.

Горещо препоръчвам да разделите данните по някакъв начин. Това не само освобождава СУБД от включване на символни блокове с променлива дължина, но също така може да даде известна възможност за генериране на съставни ключове върху части от данните. Може би дори бихте могли да намерите по-добро решение за съхранение на вашите данни.

Ако имате въпроси, предлагам да публикувате таблицата и/или структурата на базата данни и да обясните какви логически данни съдържа полето TEXT и защо смятате, че трябва да е уникално.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 5.7 &only_full_group_by

  2. MySQL заявка:Съпоставете стойност, разделена със запетая, с колона, съдържаща низ, разделен със запетая

  3. Инсталирайте MySQL с ansible на ubuntu

  4. SQLSTATE[HY093]:Невалиден номер на параметър:параметърът не е дефиниран

  5. Експортирайте данни от MySQL в Excel с UTF-8 кодиране