2009-03-04 2 views
0

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

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

+0

Является ли резкое увеличение пространства для хранения и счет;)? – Anonymous

+0

Ну, как правило, пространство для хранения - много, а время короткое. Не уверен, что вы имеете в виду. –

+0

Давайте проигнорируем тот факт, что на этот вопрос нельзя ответить на точку, которая заслуживает «принятой» галочки на мгновение. Как вы надеетесь, что это станет? «Я лучше индексирую SQL-таблицы, чем вы» -contest? (О. И это должно быть, по крайней мере, вики, чтобы избежать впечатления от голосования на лотерею) – Tomalak

ответ

2

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

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

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

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

+0

Действительно, не ища серебряную пулю :-) –

1

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

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

после установки ПК потребовалось меньше одной десятой секунды ...

поэтому запрос-оптимизатор действительно F *** CKS вверх, когда нет PK присутствует :)

+0

Нет, оптимизатор запросов находит оптимальный способ сделать это, и этот способ действительно плох. Некоторые opitmizers будут генерировать стратегию, в которой вся таблица считывается в память, а индекс, также в памяти, строится «на лету». –

2

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

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

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

ли я выиграть? : D

Смежные вопросы