Ако приемем, че говорите за действителен, строг JSON (без странности като ключове без кавички)...
json
не се различава много от text
. Не прави много освен потвърждаване на JSON .
jsonb
е различен звяр в сравнение с тези два:това е пълноценна структура от данни със собствен вътрешен формат, който има много повече операции, налични при търсения. Например json
няма приложим =
(оператор за равенство). jsonb
има. (text
също има, въпреки че е семантично различен.)
Много по-разумно е да се индексира, но трябва да се трансформира напред и назад по време на четене и запис.
Като се има предвид това, jsonb
не изглежда като добър избор тук.
... Така че остава само едно решение за вземане:
Искате ли да сте сигурни, че вашата база данни съдържа само валидни JSON стойности във вашата колона? На ниво база данни? Или имате доверие на всеки клиент на тази база данни (сървърни приложения, обикновено) да предоставя само валидни данни?
json
е относително безопасен избор и в двата случая. Използване на text
теоретично може да подобри производителността с незначителен марж поради липса на валидиране, но ще получите конкретни числа само чрез сравнителен анализ. Но няма да има тази защита срещу стойности, различни от JSON, и случайна грешка в клиента може да остане незабелязана. Тествайте отговорно!