Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Создание индекса по кускку строки. / 10 сообщений из 10, страница 1 из 1
17.07.2009, 10:50
    #36095007
segoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание индекса по кускку строки.
Используется db2 v8 for z/OS. Есть таблица:
CREATE TABLE STAT
(STA#UN INTEGER NOT NULL,
STA#ID INTEGER NOT NULL,
STAT_NO CHAR(6) FOR SBCS DATA NOT NULL)
В запросе необходимо сделать выборку STAT_NO по первым 5-и символам LEFT(STAT_NO, 5) всё работает очень медлено.. Технологически STAT_NO CHAR(6) и менять нельзя.
Вопрос: Можно ли сделать индекс по сталбцу STAT_NO по первым пяти символам или дабавить в таблицу поле STAT_NO5 CHAR(5) которое брало из поля STAT_NO первые пять символов?

Спасибо.
...
Рейтинг: 0 / 0
17.07.2009, 11:20
    #36095108
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание индекса по кускку строки.
segoffИспользуется db2 v8 for z/OS. Есть таблица:
CREATE TABLE STAT
(STA#UN INTEGER NOT NULL,
STA#ID INTEGER NOT NULL,
STAT_NO CHAR(6) FOR SBCS DATA NOT NULL)
В запросе необходимо сделать выборку STAT_NO по первым 5-и символам LEFT(STAT_NO, 5) всё работает очень медлено.. Технологически STAT_NO CHAR(6) и менять нельзя.
Вопрос: Можно ли сделать индекс по сталбцу STAT_NO по первым пяти символам или дабавить в таблицу поле STAT_NO5 CHAR(5) которое брало из поля STAT_NO первые пять символов?

Спасибо.

а если написать
where STAT_NO betheen '555550' and '555559'
...
Рейтинг: 0 / 0
17.07.2009, 11:21
    #36095111
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание индекса по кускку строки.
where STAT_NO between '555550' and '555559'
конечно
...
Рейтинг: 0 / 0
17.07.2009, 12:02
    #36095241
segoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание индекса по кускку строки.
STAT_NO символьное значение типа 000000, 011005, 713204 в запросе должно использоваться 00000, 01100, 71320.
...
Рейтинг: 0 / 0
17.07.2009, 12:04
    #36095249
Создание индекса по кускку строки.
segoff,

Цитата:http://sqlguideline.blogspot.com/Avoid scalar functions in WHERE clauses for those index columns you want to use. E.g. substring can often be replaced with LIKE or BETWEEN
Про BETWEEN уже написали, вот конструкция для LIKE:
Код: plaintext
where STAT_NO LIKE '55555_'
...
Рейтинг: 0 / 0
17.07.2009, 15:15
    #36095879
segoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание индекса по кускку строки.
Может не совсем правельно объяснил...
Есть еще одна таблица OVER и в ней есть столбец KS CHAR(5), запрос выглядит что-то вроде этого:
SELECT
*
FROM
OVER,
STAT
where OVER.KS = LEFT(STAT.STAT_NO, 5)

Работает очень долго, если бы в таблице STAT было бы поле STAT_NO5 которое брало из поля STAT_NO первые пять символов, то запрос был бы:
SELECT
*
FROM
OVER,
STAT
where OVER.KS = STAT.STAT_NO5
и всё работает моментально.
Если возможность сделать такое такое поле которое генерировалось бы автоматически или как по-другому обойти?
...
Рейтинг: 0 / 0
17.07.2009, 15:20
    #36095892
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание индекса по кускку строки.
segoff,

вам два примера предоставили, что делать в такой ситуации....
...
Рейтинг: 0 / 0
17.07.2009, 15:22
    #36095900
segoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание индекса по кускку строки.
Новый Годsegoff,

вам два примера предоставили, что делать в такой ситуации....

работает медленно..
...
Рейтинг: 0 / 0
17.07.2009, 15:41
    #36095959
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание индекса по кускку строки.
Автоматического поля там не было...

Можно такой запрос попробовать написать

SELECT
*
FROM
OVER A,
STAT B
WHERE A.KS IN ( SELECT B.STAT_NO FROM STAT B WHERE STAT_NO BETWEEN A.KS||'0' AND A.KS||'9' )
...
Рейтинг: 0 / 0
17.07.2009, 15:46
    #36095979
Создание индекса по кускку строки.
segoff,

Пробуйте так
Код: plaintext
1.
2.
SELECT * FROM OVER,STAT
where STAT.STAT_NO between OVER.KS||'0' and OVER.KS||'9'
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Создание индекса по кускку строки. / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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