Какое ваше самое большое улучшение индексации? - PullRequest
0 голосов
/ 04 марта 2009

Пару лет назад у меня было откровение, когда я оптимизировал таблицу базы данных, которая работала медленно. Исходный запрос занял бы около 20 минут в таблице с большими полями данных. После того, как я наконец понял, что никто не удосужился проиндексировать таблицу, я создал индекс для пары ключей. И вот, запрос запустился за 0,15 секунды!

Какие ваши самые большие улучшения при добавлении индекса для таблицы?

Ответы [ 3 ]

2 голосов
/ 04 марта 2009

Это относится к очень старому продукту СУБД, похожему на Oracle, но не на сам Oracle. Этот продукт позволил очень легко создать таблицу без индексов. Oracle отличается тем, что, если вы объявите первичный ключ, Oracle автоматически создаст индекс для первичного ключа. Этот продукт этого не делал.

Меня вызвали, чтобы ускорить сканирование базы данных. Была таблица «CostCenters» с 900 строками и без индексов. Пару лет назад в этой таблице было 20 строк. Для поиска ссылочной целостности в этой таблице требовалось сканирование таблицы. Система стояла на коленях.

Создание индекса заняло пять минут. Это ускорило процесс в 100 раз. Мы сделали некоторые другие вещи, такие как дефрагментация дисков и восстановление некоторых индексов, которые стали перенаселенными. Задание, которое занимало 10 минут до ускорения, заняло две секунды после ускорения.

Сказав это, не позволяйте заботам о скорости ослепить вас простым и надежным дизайном. Вам нужны простые и надежные таблицы, индексы, объекты базы данных, код приложения и запросы. Легко ускорить простые и здоровые вещи. Гораздо сложнее брать вещи, предназначенные только для скорости, и делать их простыми и надежными.

2 голосов
/ 05 марта 2009

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

Один час запроса был сокращен до 0,02 секунды, что в 180 000 раз быстрее.

http://oraclesponge.wordpress.com/2006/03/15/predicate-pushing-and-analytic-functions/

Я выиграю? : D

1 голос
/ 04 марта 2009

у меня был довольно похожий случай с таблицей, в которой не был установлен первичный ключ - поэтому присоединение к этой таблице (содержащей 5 строк или около того) заняло около 10 минут (да - другая таблица была довольно большой)

все происходит на MSSQL2k

после установки ПК это заняло менее одной десятой секунды ...

таким образом, оптимизатор запросов действительно работает, когда нет PK:)

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