Используя varchar (МАКС) по сравнению с ТЕКСТОМ на SQL Server

Мы можем использовать rename после цикла через list с map

library(tidyverse)
map(lst1, ~ .x %>%
               rename(TotalCounts = "Total Counts"))
186
задан Somnath Muluk 11 August 2016 в 23:29
поделиться

3 ответа

Тип VARCHAR (MAX) является заменой для TEXT . Основное отличие состоит в том, что тип TEXT всегда будет хранить данные в BLOB-объекте, тогда как тип VARCHAR (MAX) будет пытаться сохранить данные непосредственно в строке, если он не превышает 8k. ограничение и в этот момент он сохраняет его в BLOB-объекте.

Использование оператора LIKE одинаково для двух типов данных. Дополнительная функциональность VARCHAR (MAX) дает вам то, что она также может использоваться с = и GROUP BY , как и любая другая VARCHAR столбец может быть. Однако, если у вас есть много данных, у вас возникнут огромные проблемы с производительностью при использовании этих методов.

Что касается того, следует ли вам использовать LIKE для поиска, или если вам следует использовать Полнотекстовое индексирование и CONTAINS . Этот вопрос один и тот же, независимо от VARCHAR (MAX) или TEXT .

Если вы ищете большой объем текста и производительность является ключевой, то вам следует использовать Full Текстовый указатель .

LIKE проще в реализации и часто подходит для небольших объемов данных, но он имеет крайне низкую производительность с большими данными из-за невозможности использования индекса.

304
ответ дан 23 November 2019 в 05:49
поделиться

Для большого текста полнотекстовый индекс намного быстрее . Но вы также можете полнотекстовый индекс varchar (max) .

17
ответ дан 23 November 2019 в 05:49
поделиться

Вы не можете искать текстовое поле, не преобразовав его из текста в varchar.

declare @table table (a text)
insert into @table values ('a')
insert into @table values ('a')
insert into @table values ('b')
insert into @table values ('c')
insert into @table values ('d')


select *
from @table
where a ='a'

Это выдает ошибку:

The data types text and varchar are incompatible in the equal to operator.

Если это не так:

declare @table table (a varchar(max))

Интересно, LIKE все еще работает, т.е.

where a like '%a%'
15
ответ дан 23 November 2019 в 05:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: