Суббота, 18.05.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2018 » Июль » 27 » Быстродействие базы и индексы
20:34
Быстродействие базы и индексы

Быстродействие базы и индексы

Я сходу заявила, что медленная работа 2007-го Access-а вызвана несоответствием формата. Запускается форма, но работать она начинает только через некоторое время. Я забыла, что при запуске формы у меня там выполняются довольно тяжелые вещи.
Чтобы вытащить такой список целевых статей:

… машине надо залезть в весьма длинную таблицу платежных поручений (ZF_R) выбрать из неё все строки, по учреждению с ID=137918 и просуммировать найденное по целевым статьям (чтобы получить, сколько штук по каждой).
Это удобно, но может быть долго. Потому обычно приходится как-то стыковать желаемое и то, что может вытянуть машина. Т.е скорость, конечно, зависит от мощности машины и её загруженности (т.е сколько народу запрашивают у сервера какою-то информацию). Для чистоты эксперимента надо было подключиться там к локальной базе и посмотреть что будет. Кроме того, в 2003-м форма загружается быстро,  а вот если попытаться открыть такой список то идёт задержка. Возможно, он подгружает информацию только если её запрашивают, а 2007- подгружает всё сразу.
Но я не про это, а про то, что позволяет ускорить выборки, т.е про так называемые индексы.
Есть у меня, например, справочник экономических статей K_PS:

… и я хочу узнать, что означает код «130». Информация в справочнике, как и в любой другой таблице, вовсе не обязана быть отсортирована нужным мне образом. Более того, обычно так не бывает. Обычно всё лежит вперемешку и чтобы найти нужную строку мне надо внимательно просмотреть строки одну за другой.
Чудес не бывает. Машине, чтобы найти строку, надо делать то же самое, т.е идти вниз строка за строкой и сравнивать найденное с искомым. Машина это делает значительно быстрее человека но этот построчный поиск всё равно медленная операция и на больших базах это начинает сказываться.
А теперь я отсортирую строки по коду CPS:

Вот они все вместе, найти их легко  как организацию в «Желтых страницах». Можно пролистывать страницами, точно знаю, что нужная буква дальше.
И даже если я хочу что-то более сложное, например узнать ID строки, у которой CPS=’130’ а K_BKID=47, такая сортировка уже очень сильно упростила мне жизнь. Ведь я быстро нашла нужную информацию в 38-й стоке а дальше я, если уж очень надо, могу начать просматривать подряд все строки. Сделав только 6 шагов вниз, я найду то, что мне нужно. И мне не надо просматривать таблицу до конца. Как только записи с кодом ’130’ кончились в этой группе так сразу они закончились во всей таблице.
Сортировка таблицы в нужном порядке могла бы быть выходом если был обычно для работы не требовалось сразу несколько сортировок. Кому-то потребуются суммы по оплатам по датам, а кому-то по покупателями. Чтобы это можно было быстро находить, нужно по-разному отсортировать одни и те же платёжки.
Индекс – это дополнительная информация в данным таблицы, позволяющая машине видеть информацию так как будто таблица отсортирована нужным образом. Про их устройство немного было тут:
http://akostina76.ucoz.ru/blog/2016-10-16-3523

По-простому: если есть нужный для конкретной выборки индекс, то всё работает почти мгновенно на любой технике. Если нужного нет, то машина использует те какие есть и хоть как-то но уходит от примитивного просмотра всех строк подряд. Вытаскивать их казначейской базы индексы я не стала исходя из того что проще самой наделать тех, которые мне нужны.
Вот созданные мной индексы к расходным платёжкам:

Какие в той базе я не смотрела но почти наверняка есть там что-то до дате, документу, учреждению и т.д. А вот индекса по РНК и коду экономической статьи (у меня он назван ZF_R_RNK) может и не быть:

Я не знаю почему а таблице договоров-контрактов с РНК есть сам РНК, экономическая статья и СИЦ-ПД, а остальных кодов нет. Если очень хочется (а мне хотелось), то я могу по этой комбинации найти первую платёжку и взять остальные коды из платёжки. Так у меня и делается. Только так мне удалось получить все три цифры (план, договор, платёж) в одной строке:

Но чтобы этот фактически перебор всех контрактов с РНК и поиск платёжек к ним выполнялся максимально быстро к таблице был прицелен индекс специально для этой выборки. Чем больше индексов, подходящих к выборкам тем быстрее всё это работает (т.е выбирается информация)


 

Просмотров: 199 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
«  Июль 2018  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz