powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность сортировки.
7 сообщений из 57, страница 3 из 3
Производительность сортировки.
    #35867030
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Торможу, Param1->Value
ведет в таблицу BAG.Params1, но все-таки индекс по Value не используется. Или его там нет, или с ним что-то не так.
...
Рейтинг: 0 / 0
Производительность сортировки.
    #35867283
Hisbreht Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Торможу, Param1->Value
ведет в таблицу BAG.Params1, но все-таки индекс по Value не используется. Или его там нет, или с ним что-то не так.Я, конечно, могу заблуждаться, но, как мне кажется, это не должно иметь особого значения в данном случае, поскольку выборка данного значения осуществляется из небольшого справочника в самом начале, и, согласно плану, на дальнейшем исполнении запроса никак не сказывается
...
Рейтинг: 0 / 0
Производительность сортировки.
    #35870476
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну мне же неизвестно было, какой размер у таблицы BAG.Params1

А сколько строк в результате выборки должно появиться?
...
Рейтинг: 0 / 0
Производительность сортировки.
    #35871764
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hisbreht Victor,

Caché 2009.1.FT1

На моей машине (Intel Core2 Duo, 2Гб) выборка с отображением ID всех 2000000 записей на C# занимает 28 секунд:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  var t1 = DateTime.Now.Ticks;
  using (var cn = new CacheConnection("server=localhost;port=1972;namespace=TEST;uid=_system;pwd=SYS"))
  {
      using (var cmd = cn.CreateCommand())
      {
          cmd.CommandText = "select id from Class";
          var adapter = new CacheDataAdapter { SelectCommand = cmd };
          adapter.Fill(ds);
          dataGrid1.DataSource = ds;
          dataGrid1.DataMember = "Table";
      }
  }
  Text = new TimeSpan(DateTime.Now.Ticks - t1).Seconds + " s.";

И планы запросов на моих данных не такие как у Вас.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
План запроса:
SELECT %ID FROM Class WHERE Flag IN( 2 , 3 ) AND Param1= 10  ORDER BY Field


Относительная стоимость =  13366  
Call module B, which populates temp-file A.

Read temp-file A, looping on Field and a counter.

For each row:

 Output the row. 
 
module B 
Read bitmap index SQLUser.Class.iFlag, looping on Flag (with a given set of values) and ID.

For each row:

 Read master map SQLUser.Class.IDKEY, using the given idkey value. 
 Add a row to temp-file A, subscripted by Field and a counter, with node data of ID.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
План запроса:
SELECT %ID FROM Class WHERE Flag IN ( 2 , 3 ) AND Param1->Value= 10 


Относительная стоимость =  13878  
Read bitmap index SQLUser.Class.iFlag, looping on Flag (with a given set of values) and ID.

For each row:

 Read master map SQLUser.Class.IDKEY, using the given idkey value. 
 Read bitmap index SQLUser.Param1.iValue, using the given Value and ID. 
 For each row: 
 Output the row. 
...
Рейтинг: 0 / 0
Производительность сортировки.
    #35871920
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaMaWrперед выдачей даже одного значения необходимо выполнить полную выборку (по всем данным).
Эт того-то и задержка.
Даже если сортирока по возрастанию и имеет надежду ускорения с "подключением" некоего индекса... То сортировка по убыванию теряет всякую надежду на ускорение.

Как вариант ускоряться в другом направлении. Вплоть до прямого доступа...
Наличие индексов на полях, участвующих в сортировке, приводит к ускорению запроса в независимости от направления сортировки.
Планы запросов приведены для версии 5.0.21:
Код: plaintext
1.
2.
3.
4.
select Field from Class order by Field asc

Read index map SQLUser.Class.iField, looping on Field and ID.
For each row:
 Output the row.
Код: plaintext
1.
2.
3.
4.
select Field from Class order by Field desc

Read index map SQLUser.Class.iField, looping on Field and ID.
For each row:
 Output the row.
...
Рейтинг: 0 / 0
Производительность сортировки.
    #35872978
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Наличие индексов на полях, участвующих в сортировке, приводит к ускорению запроса
Мой опыт говорит об обратном. По крайней мере в каше 5.2 в запрос
select * from table where field1=value1 order by field2
выполняется намного дольше при наличии индекса по field2, потому что независимо от селективности почему-то используется индекс по field2

При том, что select * from table where field1=value1 выдается быстро и количество записей небольшое.
...
Рейтинг: 0 / 0
Производительность сортировки.
    #35873094
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

В версии 5.2 - вполне возможно. Это кандидат на запрос о проблеме в WRC.

В версиях 2008.2.1.902, 2009.1.FT1 планы запросов следующие:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * from Class where Param1= 10 

Относительная стоимость =  902840  
Read index map SQLUser.Class.iParam1, using the given Param1, and looping on ID.

For each row:

 Read master map SQLUser.Class.IDKEY, using the given idkey value. 
 Output the row. 
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select * from Class where Param1= 10  order by Field desc

Относительная стоимость =  1153070 
Call module B, which populates temp-file A.

Read temp-file A, looping on Field and ID.

For each row:

 Output the row. 
 
module B 
Read index map SQLUser.Class.iParam1, using the given Param1, and looping on ID.

For each row:

 Read master map SQLUser.Class.IDKEY, using the given idkey value. 
 Add a row to temp-file A, subscripted by Field and ID, 
 with node data of Flag and Param1. 
Количество возвращаемых записей на моих данных - 4313, время выполнения с отображением в Портале ~0.5 (c.), вне зависимости от наличия сортировки и ее направления.
...
Рейтинг: 0 / 0
7 сообщений из 57, страница 3 из 3
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность сортировки.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]