Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Указание индекса в селекте / 14 сообщений из 14, страница 1 из 1
29.08.2005, 12:29
    #33238595
Guer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Каким образом указать в секции from индекс для таблицы, который должен быть использован для отбора данных.

Заранее спасибо за помощь
...
Рейтинг: 0 / 0
29.08.2005, 12:37
    #33238633
vooo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Если это ASE
Код: plaintext
1.
from таблица1 (index имя индекса1), таблица2  (index имя индекса2)
...
Рейтинг: 0 / 0
29.08.2005, 18:07
    #33239643
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
А для ASA читать главу
Код: plaintext
1.
2.
ASA SQL Reference 
SQL Statements 
FROM clause
можно "подсказывать" оптимизатору на каких условиях выбирать нужный индекс из всех существующих индексов, а можно указать имя индекса для безусловного использования.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
04.10.2006, 14:11
    #34031710
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Прочитал предложенную главу в ASA SQL Reference для ASA 8.0.3
и не понял, каким образом я могу подсказать оптимизатору использовать определенный индекс. Или это поддерживается только в 9-ке?

И можно ли как-то подсказать оптимизатору порядок проверки условий при выборке?
...
Рейтинг: 0 / 0
04.10.2006, 14:15
    #34031734
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
A.K. wrote:

> Прочитал предложенную главу в ASA SQL Reference для ASA 8.0.3
> и не понял, каким образом я могу подсказать оптимизатору использовать
> определенный индекс.

Никак - ASA 9.0.1+.

> И можно ли как-то подсказать оптимизатору порядок проверки условий при
> выборке?

Не считай себя умнее оптимизатора ;).
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
04.10.2006, 14:19
    #34031754
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Хотя актуальность вопроса в целом снята (оказалось, что просто статистика давно не обновлялась), хотелось бы все же узнать, поддерживается ли что-то типа optimization hints в ASA 8.0.3 ?
...
Рейтинг: 0 / 0
04.10.2006, 14:23
    #34031784
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Dim2000

Никак - ASA 9.0.1+.

> И можно ли как-то подсказать оптимизатору порядок проверки условий при
> выборке?

Не считай себя умнее оптимизатора ;).
Posted via ActualForum NNTP Server 1.3

Спасибо за ответ, к сожалению я так и думал (
Однако в ряде случаев человек все же оказывается умнее оптимизатора, поскольку может точно знать что за данные лежат в таблицах, в то время как оптимизатор оперирует более обобщенной статистикой. Как-то раз я заикнулся по поводу бесполезности хинтов в ветке по Oracle, и меня дружно убедили на конкретных примерах что я не совсем прав.
...
Рейтинг: 0 / 0
04.10.2006, 14:26
    #34031792
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
И еще один вопрос:
Из доки следует, что ASA должна автоматически иногда перестраивать статистику, и предлагает использовать CREATE STATISTICS только в rare circumstances. Однако посмотрев syscolstat, я обнаружил там весьма старые данные. Чем руководствуется ASA определяя необходимость обновления статистики? Есть ли какие-то параметры, которыми можно заставить ее обновлять статистику почаще?
...
Рейтинг: 0 / 0
04.10.2006, 14:40
    #34031859
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
A.K. wrote:

> поддерживается ли что-то типа optimization hints в ASA 8.0.3 ?

Есть Explicit selectivity estimates, типа:

select *
from t1
where (t1.f = 10, 0.1)

Здесь мы сообщаем серверу, что вероятность того, что t1.f = 10, равна
0.1%. См. также USER_ESTIMATES option.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
04.10.2006, 15:09
    #34032008
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Dim2000
select *
from t1
where (t1.f = 10, 0.1)

Здесь мы сообщаем серверу, что вероятность того, что t1.f = 10, равна
0.1%.

Оно не о вероятностях сообщает, а о том, что такому условию соответствуют 0.1% записей в таблице. Хотя суть похожая.
...
Рейтинг: 0 / 0
04.10.2006, 16:13
    #34032352
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Александр ГoлдунОно не о вероятностях сообщает, а о том, что такому условию соответствуют 0.1% записей в таблице. Хотя суть похожая.

Ну, в общем, терминологически "вероятность" конечно не совсем верно, правильнее наверное "селективность", хотя имхо все поняли о чем речь.

Остается неотвеченным вопрос про статистику:

A.K. Из доки следует, что ASA должна автоматически иногда перестраивать статистику, и предлагает использовать CREATE STATISTICS только в rare circumstances. Однако посмотрев syscolstat, я обнаружил там весьма старые данные. Чем руководствуется ASA определяя необходимость обновления статистики? Есть ли какие-то параметры, которыми можно заставить ее обновлять статистику почаще?
...
Рейтинг: 0 / 0
04.10.2006, 17:41
    #34032721
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Статистика не будет обновлятся или будет неактуальной, если есть хоть один из пунктов:
1. Выключена опция UPDATE_STATISTICS
2. Выключена опция USER_ESTIMATES
3. Создаются в существующей таблице с записями новые поля
4. Загружаются данные через LOAD TABLE без указания пересчета статистики.

Сама же статистика обновляется сервером автоматически после каждого выполнения запроса, где оптимизатор во время построения данных собирает статистику и потом сравнивает ее с существующей, коррелируя значения на более правильные. Однако для того, чтобы это автообновление хорошо работало требуется, чтобы к таблице шло большое кол-во запросов по различным разрезам, так как к примеру постоянное обращение к таблице только по WHERE PK = Значение вряд ли чем то позволит оптимизатору скорректировать статистику по одной найденной записи :) Здесь в таком случае наверное стоит принудительно периодически обновлять статистику.

--
www.rusug.ru - портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
04.10.2006, 21:14
    #34033131
A.K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
ASCRUSСама же статистика обновляется сервером автоматически после каждого выполнения запроса, где оптимизатор во время построения данных собирает статистику и потом сравнивает ее с существующей, коррелируя значения на более правильные. Однако для того, чтобы это автообновление хорошо работало требуется, чтобы к таблице шло большое кол-во запросов по различным разрезам, так как к примеру постоянное обращение к таблице только по WHERE PK = Значение вряд ли чем то позволит оптимизатору скорректировать статистику по одной найденной записи :) Здесь в таком случае наверное стоит принудительно периодически обновлять статистику.


То есть, упрощенно говоря, оптимизатор сравнивает то что он ожидал получить и исходя из чего строил план, с тем что в результате получилось. И если оценка и факт сильно расходятся, запускает пересчет статистики?
...
Рейтинг: 0 / 0
05.10.2006, 07:56
    #34033379
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указание индекса в селекте
Нет. Оптимизатор не запускает пересчет, а просто корректирует статистику, так как при выполнении запросов по любому он ее считает выбирая записи.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Указание индекса в селекте / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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