Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Индекс на виртуальную таблицу (ase 12.5) / 17 сообщений из 17, страница 1 из 1
13.04.2011, 15:56
    #37214530
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
Есть процедура в которой создается виртуальная таблица

Код: plaintext
1.
2.
select много всяких полей
into #tab1
from table1

могу ли я сделать индекс(ы) в таблице #tab1 ?

если да, то как?

когда пробовал, сайбейс начинал ругаться что ему не нравится и он будет делать оптимизацию по-своему
...
Рейтинг: 0 / 0
13.04.2011, 17:29
    #37214863
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
Imperous,

читать второй пункт (точка)


в общем - можно создавать индексы на временные таблицы, но не в данной процедуре
...
Рейтинг: 0 / 0
14.04.2011, 11:17
    #37215920
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
On 13.04.2011 16:56, Imperous wrote:

> select много всяких полей
> into #tab1
> from table1
>
>
> могу ли я сделать индекс(ы) в таблице #tab1 ?
>
> если да, то как?

create index, не поверишь.

> когда пробовал, сайбейс начинал ругаться что ему не нравится и он будет делать
> оптимизацию по-своему

Как ругаться -то ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.04.2011, 11:21
    #37215932
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
On 13.04.2011 18:29, komrad wrote:

> читать второй пункт (точка)
> < http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc20020_1251/html/databases/databases644.htm>
>
> в общем - можно создавать индексы на временные таблицы, но не в данной процедуре

Я думаю, это немного устаревшая информация. Ерик Майнер в форуме по P&T
клялся и божился, что какой-то там schema version counter при create index
модифицируется и это заставляет следующие запросы, использующие эту временную
таблицу, НА ХОДУ В ПРОЦЕССЕ ВЫПОЛНЕНИЯ ПРОЦЕДУРЫ пересоздать их планы
выполнения. Так что надежда есть на то, что индекс должен использоваться
даже при создании таблицы и индекса В ЭТОЙ ЖЕ САМОЙ хранимой процедуре.

Надо пробовать.

К тому же ещё можно просто форсануть индекс, лучше это делать по номеру.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.04.2011, 11:23
    #37215942
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
MasterZivК тому же ещё можно просто форсануть индекс, лучше это делать по номеру.


для этого индекс необходимо не только создать (при этом уже знаем его имя!), но и получить его номер, а это дополнительное действие
...
Рейтинг: 0 / 0
14.04.2011, 11:26
    #37215949
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
On 14.04.2011 12:23, komrad wrote:
> для этого индекс необходимо не только создать (при этом уже знаем его имя!), но
> и получить его номер, а это дополнительное действие

Тут есть один хитрый финт. Если индекс один, и кластерный, его номер 0.
Если индекс один и некластерный, -- его номер 1.
В принципе и остальные номера вычисляются.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.04.2011, 13:29
    #37216298
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
MasterZivТут есть один хитрый финт. Если индекс один, и кластерный, его номер 0.
Если индекс один и некластерный, -- его номер 1.
В принципе и остальные номера вычисляются.

ух ты! запишу себе в книжечку
...
Рейтинг: 0 / 0
14.04.2011, 14:33
    #37216470
cherrex_Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
Проверено! Индекс используется! ASE 15.5

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create proc temp_index_test
as

select *
into #tmp
from very_large_tbl

create index idx_tmp_field1 on #tmp(field1)

select * from #tmp
where field1 =  11 

план|ROOT:EMIT Operator (VA = 1)
|
| |SCAN Operator (VA = 0)
| | FROM TABLE
| | #tmp
| | Index name not found.
| | Forward Scan.
| | Positioning by key.
| | Using I/O Size 16 Kbytes for index leaf pages.
| | With LRU Buffer Replacement Strategy for index leaf pages.
| | Using I/O Size 16 Kbytes for data pages.
| | With LRU Buffer Replacement Strategy for data pages.
...
Рейтинг: 0 / 0
14.04.2011, 16:35
    #37216794
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
On 14.04.2011 15:33, cherrex_Den wrote:

> Проверено! Индекс используется! ASE 15.5

Видите, не обманул значит Эрик.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
15.04.2011, 13:32
    #37218322
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
ничо не понимаю, думаю сделаю похожую хранимку на ту которую делал и приведу вам пример и хранимки и того как сайбейс говорит что ему это не нравится, но блин хранимка создалась и отработала как надо и никаких сообщений сайбейс не дал...
...
Рейтинг: 0 / 0
28.04.2011, 11:33
    #37237595
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
вот, у меня получилось добиться того чтоб оптимизатор забил болт на индекс
смотрим тут
...
Рейтинг: 0 / 0
28.04.2011, 12:19
    #37237758
SAV4SAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
Imperous,

Так надо не по имени, а по номеру форсировать индекс
(index 1) к примеру

0 if a table
1 if a clustered index on an allpages-locked table
>1 if a nonclustered index or a clustered index on a data-only-locked table (т.е. с 2 нумерация начинается)
255 if text, image or Java off-row structure (LOB structure)
...
Рейтинг: 0 / 0
28.04.2011, 12:59
    #37237882
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
не совсем понял

делаю так:

Код: plaintext
1.
2.
3.
4.
5.
select id_karta, val_karta
into #srok
from srok_karta
where dat_karta = "2011/03/01"

create index idx_id_karta on #srok(id_karta)
...
Рейтинг: 0 / 0
28.04.2011, 14:39
    #37238198
SAV4SAV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
Imperous,

Ну, видимо в Вашей процедуре написано так -

Код: plaintext
1.
2.
3.
4.
5.
select * from #srok (index idx_id_karta)
where id_karta= 1111 
-- в 12.5 лучше писать
select * from #srok (index  2 ) -- 2 в рассчете, что по дефолту табла allpages
where id_karta= 1111 
Поведение зависит от версии, в 15.5 ругается при (index 2). Но результирующий план (сохраненный),
в обоих случаях будет использовать индекс. Проверяется вторым запуском процы.
...
Рейтинг: 0 / 0
12.05.2011, 12:00
    #37256657
JenyaD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
А на версии 15.0.2 нормально хватает 2-й по номеру индекс.
В общем по номеру, я так понял не надёжно, в разных версиях ASE ведет себя по разному.
...
Рейтинг: 0 / 0
12.05.2011, 12:25
    #37256717
JenyaD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
Да кстати после 2-го запуска процедуры индекс используется судя по времени, хотя и пишет 'Index name not found.'
...
Рейтинг: 0 / 0
12.05.2011, 14:10
    #37256967
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индекс на виртуальную таблицу (ase 12.5)
On 12.05.2011 13:00, JenyaD wrote:

> А на версии 15.0.2 нормально хватает 2-й по номеру индекс.
> В общем по номеру, я так понял не надёжно, в разных версиях ASE ведет себя по
> разному.

Знаешь ли, хинты -- они вообще в принципе не обязаны работать. Оптимизатор
может их принимать, а может и нет. Это ж ХИНТЫ !
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Индекс на виртуальную таблицу (ase 12.5) / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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