Имя: Пароль:
1C
1С v8
Запрос. Значение из БД в условие без применения параметров.
,
0 totparen
 
27.07.11
13:42
Подскажите пожалуйста, можно ли как-то обойтись ещё без применения параметров


ВЫБРАТЬ
   Номенклатура.Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.ВидНоменклатуры.Наименование = "Набор-комплект"
1 Axel2009
 
27.07.11
13:44
можно, бацаешь регистр сведений, туда заносишь строками свои наименования и соединяешь с ним
2 catena
 
27.07.11
13:45
ВидНоменклатуры - кто по национальности?
3 Defender aka LINN
 
27.07.11
13:47
(0) Аллергия на параметры?
Лично я в этом запросе параметров не вижу, в чем проблема-то?
4 totparen
 
27.07.11
13:52
(2) - справочник. Предопределенных элементов нет.

(3) Один из вариантов без параметра. Хочу проверить, что быстрее условие с сравнением с текстом, либо в сравнении по ссылке. Можно конечно ещё Временную таблицу сделать, с поиском по Наименованию а потом уже сравнивать, но может есть ещё что-нибудь с примененимем ЗНАЧЕНИЕ
5 Dem1urg
 
27.07.11
13:52
(0) Можно, если "Набор-комплект" предопределенный элемент справочника. В языке запросов есть конструкция ЗНАЧЕНИЕ(?)
6 forforumandspam
 
27.07.11
13:53
(0) Я так понимаю, что ты так ни разу не писал:

...Счет = ЗНАЧЕНИЕ(ПланСчетов.Типовой.ДенежныеСредства)

вместо

...Счет = &Счет
7 totparen
 
27.07.11
13:53
Посоветуйте ресурс по оптимизации запросов.
8 Fragster
 
гуру
27.07.11
13:53
со ссылка = &ссылка быстрее, чем с ссылка.наименование="ыыыыыы"
9 Fragster
 
гуру
27.07.11
13:54
(7) моск. профайлер скуля
10 Defender aka LINN
 
27.07.11
13:54
(4) По ссылке быстрее будет, соединения лишнего нет.
11 totparen
 
27.07.11
13:54
(5)(6) -> (4)   Предопределенных нет. ))
12 Axel2009
 
27.07.11
13:55
(4) быстрее то что быстрее сравнивается.
(8) ну ссылка не составная имеет размер 16 байт. если наименование содержит меньше чем 16 байт, тогда по наименованию быстрее. вопрос в индексах встанет
13 totparen
 
27.07.11
13:56
(8) (10) (12) мерси.
14 Fragster
 
гуру
27.07.11
13:56
(12) нифига не правильно
15 Axel2009
 
27.07.11
13:57
(14) по какому критерию? если принять во внимание, что я еще не учел соединение.
16 Defender aka LINN
 
27.07.11
13:57
(12) Конечно. А ничего, что для того, чтобы получить наименование, надо соединение с другой таблицей сделать?
17 Axel2009
 
27.07.11
13:58
(16) нельзя сказать что ВСЕГДА поиск по ссылке быстрее поиска по строке. все зависит от запроса.
18 Fragster
 
гуру
27.07.11
14:04
(15) соединение, размер ссылки, индекс у ссылки primary, наименования и кода (если они включены в ввод по строке) - составной...
19 Fragster
 
гуру
27.07.11
14:07
наименование - варчар, ссылка - фиксед бинари
20 Axel2009
 
27.07.11
14:07
(18) ну прежде чем ссылку сравнивать, в любом случае нужно входной параметр передать ссылку. а его нужно для начала найти...
21 Fragster
 
гуру
27.07.11
14:08
(20) зачем? ссылка может хранится в сохраненных настройках, например
22 H A D G E H O G s
 
27.07.11
14:09
(19) Варчар не храниться в основной таблице. Как и image?
23 H A D G E H O G s
 
27.07.11
14:10
(18) primary индекс -че это?
Кластерный индекс - знаю. primary - нет, не видел...
24 Axel2009
 
27.07.11
14:10
(21) да может быть все что угодно, только от этого однозначного ответа не будет, что по ссылка всегда быстрее..
(22) хранится.. не хранится строка неограниченной длины - ака text
25 Fragster
 
гуру
27.07.11
14:11
(23) первичный ключ, чО
26 Fragster
 
гуру
27.07.11
14:12
(22) индекс по вар- ЕМНИП медленнее, чем по фиксед.
27 H A D G E H O G s
 
27.07.11
14:12
(25) Индекс и ключ - разные вещи..
28 Fragster
 
гуру
27.07.11
14:12
(22) хранится в основной таблице, но длина строки переменная - это немного замедляет
29 H A D G E H O G s
 
27.07.11
14:13
(24) Че делать, если поле хранит строки переменной длины?
30 Axel2009
 
27.07.11
14:13
(21)+в общем я знаю что ты знаешь. поэтому дискуссировать на эту тему не надо ИМХО =)
(25) PRIMARY - группа файлов ващет..
31 H A D G E H O G s
 
27.07.11
14:14
(28) Как ты себе это представляешь?
32 Axel2009
 
27.07.11
14:14
(26) ниразу такого не слышал на форумах по скулю. быстрее то, где меньше данных..
33 Axel2009
 
27.07.11
14:15
(29) вопрос не понял..
34 H A D G E H O G s
 
27.07.11
14:15
При увеличении длины строки - происходит реаллокация всех записей внутри 4 кбайтовой страницы, так?
35 Axel2009
 
27.07.11
14:16
(34) не 4кб, а 8кб, но так. а индексы имеют 900байтные страницы (я про скуль, остальные не изучал подробно)
36 H A D G E H O G s
 
27.07.11
14:16
(35) Жестко. Ок, 8 кбайт.
37 Axel2009
 
27.07.11
14:17
(35)+зы для переменной длины не произойдет.. колво данных не изменится фактически. для фиксированной произойдет.
38 Fragster
 
гуру
27.07.11
14:18
Расчет размера данных с переменной длиной:

Если таблица содержит столбцы с переменной длиной, определите, сколько пространства потребуется для хранения столбцов в строке:

Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

Байты, добавляемые к Max_Var_Size, нужны для отслеживания каждого столбца переменных. Эта формула исходит из предположения, что все столбцы переменной длины заполнены на 100 %. Если предполагается, что будет использовано меньше места для хранения столбца изменяемой длины, можно изменить значение Max_Var_Size в процентах от общей изменяемой длины для более точного подсчета общего размера таблицы.
Примечание Примечание

Можно сочетать столбцы varchar, nvarchar, varbinary или sql_variant, в результате чего общая ширина определенной таблицы превысит 8060 байт. Длина каждого из этих столбцов должна быть в пределах 8 000 байт для столбцов типа varchar, varbinary или sql_variant и 4 000 байт для столбцов типа nvarchar. Тем не менее их общая ширина в таблице может превышать предел в 8 060 байт. Дополнительные сведения см. в разделе Превышающие размер страницы данные строки, превышающие 8 КБ.

Если в таблице нет столбцов переменной ширины, присвойте параметру Variable_Data_Size значение 0.

Вычислите общий размер строк:

Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4
39 Fragster
 
гуру
27.07.11
14:20
Алгоритм точного определения пространства, используемого для хранения значений типов данных LOB varchar(max), varbinary(max), nvarchar(max), text, ntext, xml, и image, сложен. Достаточно просто прибавить ожидаемую среднюю величину значений LOB к общему размеру кучи.
40 Fragster
 
гуру
27.07.11
14:22
41 Fragster
 
гуру
27.07.11
14:23
При задании для таблицы ограничения PRIMARY KEY компонент Database Engine гарантирует уникальность данных созданием уникального индекса для столбцов первичных ключей. Этот индекс также обеспечивает быстрый доступ к данным при использовании первичного ключа в запросах. Таким образом, выбранные первичные ключи должны соответствовать правилам создания уникальных индексов.
42 H A D G E H O G s
 
27.07.11
14:25
(41) Вон оно че..
43 Axel2009
 
27.07.11
14:34
(38) откуда инфа про Num_Variable_Cols x 2?
у нас 1 таблица с типом varchar(1000) и заполняем по 1му символу. сколько будет занимать объем данных на 1000 строк?
(39) ну да, проще написать "сложный алгоритм", и давайте считать что 100%, чтобы голову не забивать =)
(40) понял про что. раньше это были constraints..
44 Fragster
 
гуру
27.07.11
14:47
(43) это с MSDN про определение размера кучи
46 Fragster
 
гуру
27.07.11
14:48
и (39) тоже оттуда
47 Fragster
 
гуру
27.07.11
14:51
с первичным ключем ИТОГИ работают в 1с прикольно. если сделать ИТОГИ ПО первичному ключу, оно же ссылка - то в полях итогов также будут значения остальных столбцов:

ВЫБРАТЬ ПЕРВЫЕ 100
   РеализацияТоваровТовары.Ссылка,
   РеализацияТоваровТовары.НомерСтроки,
   РеализацияТоваровТовары.Номенклатура,
   РеализацияТоваровТовары.Количество
ПОМЕСТИТЬ ТЧ
ИЗ
   Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РеализацияТоваров.Ссылка КАК Ссылка,
   РеализацияТоваров.ВидОперации,
   ТЧ.НомерСтроки,
   ТЧ.Ссылка.ВидОперации,
   ТЧ.Номенклатура,
   ТЧ.Количество,
   РеализацияТоваров.Номер
ИЗ
   ТЧ КАК ТЧ
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваров КАК РеализацияТоваров
       ПО ТЧ.Ссылка = РеализацияТоваров.Ссылка
ИТОГИ ПО
   Ссылка
48 Axel2009
 
27.07.11
14:57
(46) все допер. для переменной длины добавляем 2 байта на колонку, в этих данных хранится длинна символов строки. ну может еще 2 байта на хранение чегото там, итого 4 байта + 4 символа = 8 байт. длина ссылки 16 байт, что несколько больше, чем переменная длина..
(47) сгруппировать по также работает..
49 hhhh
 
27.07.11
15:13
щас окажется, что у него файловая база, а не SQL
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn