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

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

И можно ли как-то подсказать оптимизатору порядок проверки условий при выборке?
...
Рейтинг: 0 / 0
Указание индекса в селекте
    #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
Указание индекса в селекте
    #34031754
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя актуальность вопроса в целом снята (оказалось, что просто статистика давно не обновлялась), хотелось бы все же узнать, поддерживается ли что-то типа optimization hints в ASA 8.0.3 ?
...
Рейтинг: 0 / 0
Указание индекса в селекте
    #34031784
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000

Никак - ASA 9.0.1+.

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

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

Спасибо за ответ, к сожалению я так и думал (
Однако в ряде случаев человек все же оказывается умнее оптимизатора, поскольку может точно знать что за данные лежат в таблицах, в то время как оптимизатор оперирует более обобщенной статистикой. Как-то раз я заикнулся по поводу бесполезности хинтов в ветке по Oracle, и меня дружно убедили на конкретных примерах что я не совсем прав.
...
Рейтинг: 0 / 0
Указание индекса в селекте
    #34031792
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще один вопрос:
Из доки следует, что ASA должна автоматически иногда перестраивать статистику, и предлагает использовать CREATE STATISTICS только в rare circumstances. Однако посмотрев syscolstat, я обнаружил там весьма старые данные. Чем руководствуется ASA определяя необходимость обновления статистики? Есть ли какие-то параметры, которыми можно заставить ее обновлять статистику почаще?
...
Рейтинг: 0 / 0
Указание индекса в селекте
    #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
Указание индекса в селекте
    #34032008
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000
select *
from t1
where (t1.f = 10, 0.1)

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

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

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

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

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

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

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


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


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