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

Някакви недостатъци при използването на текст от тип данни за съхранение на низове?

По принцип не ест недостатък на използването на text по отношение на производителност/памет. Напротив:text е оптималното. Други видове имат повече или по-малко подходящи недостатъци. text е буквално „предпочитаният“ тип сред типовете низове в системата тип Postgres, което може да повлияе на разделителната способност на функция или тип оператор.

По-специално, никога използвайте char(n) (псевдоним за character(n)). ), освен ако не знаете какво правите. char или character са просто съкратени от character(1) , така че все едно. Вътрешното име е bpchar (означава "черно-подплатен знак"). Типът е там само за съвместимост със стария код и стандарти. В днешно време има много малко смисъл, губи памет и е вероятно да причини проблеми:

  • Сравнете varchar с char
  • Дължина на полето на низ в Postgres SQL

Можете да използвате varchar(n) с модификатор на дължина (псевдоним за character varying(n) ). Но varchar(255) обикновено показва недоразумение, пренесено от други RDBMS, където може да е локален оптимум за производителност. В Postgres, модификаторът на дължина (255) няма специално значение и рядко има смисъл.

  • Трябва ли да добавя ограничение за произволна дължина към колоните VARCHAR?

По-старите версии причиниха различни проблеми при опит за промяна на модификатора на дължина на varchar(n) по късно. Повечето от тях са облекчени в съвременния Postgres, но text или varchar (псевдоним за character varying ) без спецификатор на дължина (и CHECK ограничение) никога не е имал нито един от тези проблеми.

A CHECK ограничението е също толкова бързо и по-малко вероятно да причини проблеми със зависими изгледи, функции, FK ограничения и т.н., които зависят от типа на колоната. И може да направи повече от просто да наложи максимална дължина на символа - всичко, което можете да поставите в булев израз. Вижте:

  • Промяна на колоните на PostgreSQL, използвани в изгледите

И накрая, има и "char" (с двойни кавички):1-байтов тип данни за една ASCII буква, използвана като евтин вътрешен тип изброяване.

Рядко използвам нещо друго освен text за символни данни в Postgres.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Barman Cloud – Част 2:Облачно архивиране

  2. Heroku Postgres Грешка:PGError:ГРЕШКА:релационни организации не съществуват (ActiveRecord::StatementInvalid)

  3. SQLAlchemy - SQLite за тестване и Postgresql за разработка - Как да пренасям?

  4. Общ преглед на VACUUM обработката в PostgreSQL

  5. PostgreSQL управление и автоматизация с ClusterControl