Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Типы данных


Автор: Rtm 30.3.2006, 08:17
Влияет ли на скорость передачи данных тип данных ? (например, если одновременно по несколько запросов делают 100 чел.)
т.е. есть строка типа VARCHAR длинной, например 200 символов и строка типа TEXT такой же длины.
они буду передоваться с одинаковой скоростью ?


Автор: HalkaR 30.3.2006, 13:27
Rtm, куда передаваться?
А считываться TEXT будет медленнее VARCHAR, посмотри в доках как храняться разные типы данных.

Автор: Rtm 30.3.2006, 15:05
в dos была такая бд - клареон,помойму
так вот, в ней если данные были больше максимально разрешенной длины, то рекомендовалось использовать два таких поля, а не поле другого типа, для большей ёкорости.

в такой ситуации в mySQL как лучше поступать.

Цитата

А считываться TEXT будет медленнее VARCHAR, посмотри в доках как храняться разные типы данных.


а почему дольше ?

Цитата

столбец TEXT может рассматриваться как столбец VARCHAR неограниченного размера.
...
в версии MySQL 5.0.3 и выше VARCHAR ограничивается 65535 ( что тоже самое что и TEXT )
...
VARCHAR и TEXT являются типами данных с переменной длиной строки, для таких типов требования к памяти в общем случае определяются реальным размером величин в столбце, а не максимально возможным для данного типа размером. Например, столбец VARCHAR(10) может содержать строку с максимальной длиной 10 символов. Реально требуемый объем памяти равен длине строки (L) плюс 1 байт для записи длины строки.
В случае TEXT требуется 1, 2, 3 или 4 байта для записи длины значения данного столбца в зависимости от максимально возможной длины для данного типа.


т.е. ты хочеш сказать что VARCHAR(200) будет считываться быстрее чем TEXT(200) ?
у них же разница требуемого объема памяти будет всего не 0-3 байта,
мне кажеться это не может повлиять на скорость выполнения чтения.



Автор: ALKS 30.3.2006, 18:11
Мне очень интересно посмотреть как вам удасться описать TEXT(200) . ситаксис этого вам не позволит.

TEXT - Variable-length non-Unicode data with a maximum length of 2^31 - 1 (2,147,483,647) characters.

Господа, TEXT это по сути BLOB. SQL cервер (собственно любой а не только MS) работает с такими типами особым образом. в общем случае - сравнительно медленно. Использловать BLOB-ы без необходимости не стоит.

Но... "скорость передачи данных" хм... это вообще не коректная фраза. скорость передачи данных между чем и чем, простите? Что-то мне подсказывает что пропусканая способность вашей локальной сети, например, будет гораздо более "узким" местом при передаче результирующего множеста с сервера на клиент нежели любые манипуляции с типами на строне сервера. Размер вашего результирующего множества будет проблемой а не, то как именно храниться конкретный элемент данных. Храните вы ваш кусок текста в TEXT или в 40 строках VARCHAR(4000) по сети вам придеться передавать пирмерно один и тот же объем данных и еще хороший вопрос что будет работать быстрее.

Люди, современный SQL сервер это не FOXPRO 1.0 под DOS. там серьезнейшая оптимизация и кэширование на всех уровнях. ваши данные из типа TEXT вообще могут в памяти оказаться на момент запроса. вы рассуждаетет как будто до сих пор имеете дело с фаил-сервером локального уровня каким-то...

Автор: Rtm 31.3.2006, 08:40
И какой же вывод ?

как лучше хранить данные кусоком текста в TEXT или в 40 строках VARCHAR(4000)

?

Автор: ALKS 31.3.2006, 11:32
Rtm, не нужно считать себя умнее огромной кучи людей, которые многие годы разрабатывают MS SQL Server. Тип TEXT предназначен для хранения больших кусков текста. Тебе нужно хранить большой кусок текста? - вот и пользуйся. Не стоит пытаться изварачиваться и создавать собственные структуры данных и механизмы хранения. лучше не получиться, уверяю тебя.

И вообще откуда вопрос? у тебя проблемы со скоростью передачи данных? ты уверен что причина это тип TEXT?

Автор: smartov 31.3.2006, 11:44
Rtm, храни куском текста (TEXT) так будет удобнее.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)