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

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

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

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

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

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


в общем - можно создавать индексы на временные таблицы, но не в данной процедуре
...
Рейтинг: 0 / 0
Индекс на виртуальную таблицу (ase 12.5)
    #37215920
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Индекс на виртуальную таблицу (ase 12.5)
    #37215932
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Индекс на виртуальную таблицу (ase 12.5)
    #37215942
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivК тому же ещё можно просто форсануть индекс, лучше это делать по номеру.


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

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

ух ты! запишу себе в книжечку
...
Рейтинг: 0 / 0
Индекс на виртуальную таблицу (ase 12.5)
    #37216470
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверено! Индекс используется! 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
Индекс на виртуальную таблицу (ase 12.5)
    #37216794
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 14.04.2011 15:33, cherrex_Den wrote:

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

Видите, не обманул значит Эрик.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Индекс на виртуальную таблицу (ase 12.5)
    #37218322
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничо не понимаю, думаю сделаю похожую хранимку на ту которую делал и приведу вам пример и хранимки и того как сайбейс говорит что ему это не нравится, но блин хранимка создалась и отработала как надо и никаких сообщений сайбейс не дал...
...
Рейтинг: 0 / 0
Индекс на виртуальную таблицу (ase 12.5)
    #37237595
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот, у меня получилось добиться того чтоб оптимизатор забил болт на индекс
смотрим тут
...
Рейтинг: 0 / 0
Индекс на виртуальную таблицу (ase 12.5)
    #37237758
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Индекс на виртуальную таблицу (ase 12.5)
    #37237882
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем понял

делаю так:

Код: 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
Индекс на виртуальную таблицу (ase 12.5)
    #37238198
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Индекс на виртуальную таблицу (ase 12.5)
    #37256657
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А на версии 15.0.2 нормально хватает 2-й по номеру индекс.
В общем по номеру, я так понял не надёжно, в разных версиях ASE ведет себя по разному.
...
Рейтинг: 0 / 0
Индекс на виртуальную таблицу (ase 12.5)
    #37256717
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да кстати после 2-го запуска процедуры индекс используется судя по времени, хотя и пишет 'Index name not found.'
...
Рейтинг: 0 / 0
Индекс на виртуальную таблицу (ase 12.5)
    #37256967
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 12.05.2011 13:00, JenyaD wrote:

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

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


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