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

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

Еще одним способом повышения скорости работы запросов может быть денорма-лизация данных. Что это такое? У вас может быть несколько связанных таблиц. В первой из них находится фамилия человека, а в пятой - город проживания. Чтобы получить в одном запросе оба значения, нужно создать связь между таблицами, и для сервера такой запрос может быть слишком сложным. В таких случаях значения города копируют в ту же таблицу, где находится фамилия, и связь становится ненужной. Конечно же, появляется и избыточность данных - в двух таблицах хранятся одни и те же данные и в таблице с фамилиями во многих строках будет повторяться значение города, но это повышает скорость обработки, и иногда очень значительно.

Минусом денормализации является сложность поддержки данных. Если в одной таблице изменились значения, то вы должны обновить соответствующие значения в другой таблице. Именно поэтому для денормализации используют только те поля, которые изменяются редко, благо города у нас переименовывают не каждый день и данные легко поддерживать даже вручную.

2.12.1. Оптимизация запросов || Оглавление || 2.12.3. Изучайте систему


Delphi в шутку и всерьез: что умеют хакеры



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31