powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Индексы в IQ
7 сообщений из 7, страница 1 из 1
Индексы в IQ
    #36499323
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IQ 12.7
Вопрос по поводу использования индексов.
Есть таблица. Простыня.
В ней допустим есть одно поле flat varchar(10) - квартира, которая может хранить и "1", и "11", и "1а" и т.д
Допустим при вводе в поиске в клиентском приложении 1 - надо найти 1, 1а, но не 11,12 и т.д. (Такое ТЗ).

Код: plaintext
select top  10  building,flat from bpl.services where flat = '1' or flat LIKE '1[^0-9]%' order by fio desc

Построил HG индекс.
="1" - успешно юзает этот индекс
Вопрос - что надо для второго условия? Ни HG индекс, ни построенный WD индекс не используются.

Код: plaintext
create wd index WD_s_flat on bpl.services(flat) delimited by ''

Приложил план в штмл.

Если можно - любые интересные моменты по использованию индексов.
...
Рейтинг: 0 / 0
Индексы в IQ
    #36500219
L.M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
select top  10  building,flat from bpl.services 
where flat LIKE '1%' AND (flat = '1' or flat LIKE '1[^0-9]%') order by fio desc
...
Рейтинг: 0 / 0
Индексы в IQ
    #36500391
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм.
А в чем смысл? Нормально работает и мой запрос. Ваш длиннее.
Суть не в этом, а в том - как заставить для like с масками работать WD индекс. По документации он как раз для лайков и сделан (и для contains).
Но как видно из плана - используется дефолтный FP индекс.
...
Рейтинг: 0 / 0
Индексы в IQ
    #36500599
Peter Kirillow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мысли вслух
HG используется для прамого равенства. WD - для LIKE(не для всех)/CONTAINS
не пробовали убрать flat='1' и оставить только LIKE ?
хотя скорее всего он все равно выберет FP (http://www.ribeiros.co.uk/documents/IQ_index_quick_reference.pdf)
но в этом случае можно поиграться (ради интереса) с параметром сервера Index_Preference:
0 Let the optimizer choose
1 Prefer LF indexes -1 Avoid LF indexes
2 Prefer HG indexes -2 Avoid HG indexes
3 Prefer HNG indexes -3 Avoid HNG indexes
4 Prefer LD indexes -4 Avoid LD indexes
5 Prefer FP indexes -5 Avoid FP indexes
у вас HG скомбинирован с WD ?
...
Рейтинг: 0 / 0
Индексы в IQ
    #36500634
Peter Kirillow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выдержка про индесы из SybaseIQWorkBook_v3.1
(это почему он выбирает FP)

Fast Projection FP Default index, cannot be dropped.
Useful for:
Wildcard search - LIKE '%sys%
Expression Calculation - SUM(A+B)
Join Operations – matches up column values
BIT datatypes

Low Fast LF The index consists of a B-tree and data pages holding a bitmap for each distinct value
Useful for:
Search arguments in WHERE clause (=, !=, IN, Not IN)
MIN or MAX aggregate functions
GROUP BY clauses

High Group HG This index will use the most disk space for storage and takes the longest time to load
Useful for:
Search arguments in WHERE clause (=, !=, IN, Not IN)
GROUP BY clauses

High Non Group HNG A non-value based bitmap ideal for operations involving ranges or aggregations
Useful for:
Ranges
BETWEEN
SUM( ) and AVG( ) functions
Compare CMP Useful for:
<, =, > in WHERE clause

WORD WD Useful for:
‘CONTAINS’ query verb
LIKE operator

Date DATE Useful for DATE fields with:
queries with range predicates (>, <, >=, <=, BETWEEN)
queries with DATEPART using equality predicates (= !=).

Time TIME Useful for TIME fields with:
queries with range predicates (>, <, >=, <=, BETWEEN)
queries with DATEPART using equality predicates (= !=).

Datetime DTTM Useful for Datetime fields with:
queries with range predicates (>, <, >=, <=, BETWEEN)
queries with DATEPART using equality predicates (= !=).
...
Рейтинг: 0 / 0
Индексы в IQ
    #36500673
Peter Kirillow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, для колонки с номерами квартир будет достаточно компактый дистинкт, так что LF в этом случае рекомендуется больше, чем HG
...
Рейтинг: 0 / 0
Индексы в IQ
    #36503130
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за линк! И за пояснения. После недолгих раздумий и борьбы решил сделать проще. На моменте занесения данных в базу - разрезать кватиры и дома на два поля - интовый номер (и сделать по нему HG или LF индекс) и все что после номера - заносить в проефикс. По второму полю юзать дефолтный FP индекс. По идее такая реализация даст максимальный эффект.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Индексы в IQ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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