DB2 z / os выполняет SQL-запрос для определенного раздела таблицы - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть таблица db2, которая содержит транзакции клиентов.

В этой таблице содержится около 500 миллионов записей, и когда я пытаюсь выполнить запрос на выборку МЕЖДУ определенными датами, запрос выполняется в течение длительного времени.Администратор БД в компании сказал мне, что он будет работать быстрее, если я смогу указать раздел в моем SQL.

Итак, вопрос такой: При условии, что у меня есть следующая таблица с именем Cust_Trans со следующими столбцами

Cust_Num, Trans_Date, Trans_Type, Trans_Value + 30 more columns

Какие изменения я могу внести в следующий запрос SQL, чтобы он был нацелен на определенный раздел?

Select *

From Cust_Trans

При поиске на форуме и в документации IBM я нашел решения, включающие схему SYSCAT и функцию datapartitionnum

Однако в моей версии DB2 нет схемы SYSCAT, а есть только схема SYSIBM.Поэтому я не смог реализовать ни одно из решений

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Вам необходимо знать, что представляют собой столбцы разделения для этой таблицы, а затем добавить предикат первого порядка (WHERE = ... или WHERE BETWEEN ... AND ...) к вашему запросу для "основного" столбца разделения при условии такая фильтрация действительно предназначена для вашего запроса.

0 голосов
/ 06 февраля 2019

Для Db2 для Z / OS таблицы каталога находятся в схеме SYSIBM.

Для Db2 для Linux / Unix / Windows представления каталога представлены в схеме SYSCAT.

Для Db2 для серии i каталог может быть в схеме QSYS2.

ДляDb2 для Z / OS, посмотрите таблицу SYSIBM.SYSCOLUMNS для вас, столбцы, чьи PARTKEY_COLSEQ имеют ненулевое значение, являются столбцами разделения диапазона.

Рекомендуется использовать столбец разделенияв предложении WHERE запроса, предполагая, что хотя бы один из столбцов раздела является столбцом trans_date, который вы упомянули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...