Оптимизация базы данных

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

1. Уменьшите размер текстовых полей до необходимого минимума. Данные в базе хранятся в кодировке UTF-8, один символ занимает 4 байта. Если вы меняете размер полей в уже рабочей базе, то после изменения размера полей сделайте процедуру резервного копирования / восстановления, чтобы сжать базу и очистить ее от мусора. Также не меняйте размер большому количеству полей, т. к. это может привести к очень долгому сохранению изменений. При изменении размера поля DataExpress на самом деле создает новое поле и копирует содержимое старого поля в новое, старое поле затем удаляется. Поэтому размер базы после такой операции не уменьшается, а наоборот увеличивается.

2. Используйте компонент «Поле объекта» вместо частых обращений к полю объекта в выражениях.

3. Старайтесь избегать интенсивного использования функций DB в выражениях.

4. Если в выражении вы обращаетесь к одному и тому же полю объекта более одного раза, то можно сохранить результат в переменную и обращаться к переменной. То же самое и с итоговыми функциями и DB-функциями.

5. При открытии формы, программа читает данные всех полей, в том числе изображения и файлы, хранимые в базе (миниатюры изображений всегда хранятся в базе). Если изображения и файлы хранятся в базе, то это может привести к значительному замедлению чтения данных из базы. В этом случае имеет смысл создавать простую форму и запрос для выборки данных из нужной формы, или использовать отчет.

6. Чтение подчиненных данных формы (таблиц и запросов) тоже может сильно замедлять работу. В этом случае тоже имеет смысл создавать простую форма + запрос или использовать отчет. Если используются запросы, то можно переключить их на ручное обновление и управлять процессом обновления скриптом или действием.

7. Используйте выходной фильтр запросов и отчетов только тогда, когда невозможно использовать фильтр источника.

8. Делайте объекты, которые ссылаются на иерархические справочники обязательными для заполнения. В этом случае программа оптимизирует запрос к базе и скорость выборки значительно возрастет. Обратите внимание, что в этом случае записи с пустыми объектами не войдут в выборку.