30
Глава 1.
Оценка
Настройка SQL заново
Когда один индекс не дает тех результатов, на которые мы рассчитыва-
ем, иногда улучшить производительность может другой индекс . Пре-
жде всего, почему индекс создан только по одному столбцу accountid?
По существу, индекс представляет собой отсортированный по древовид-
ной схеме список значений ключа, связанных с физическими адреса-
ми строк, соответствующих значениям этих ключей, – точно так же,
как предметный указатель этой книги представляет собой отсортиро-
ванный список ключевых слов, связанных с номерами страниц . Если
мы осуществляем поиск по значениям из двух столбцов, а проиндек-
сирован только один из них, нам придется зайти на все строки, соот-
ветствующие ключу, который мы ищем, и отбросить подмножество из
этих строк, которое не соответствует ключу для другого столбца . Если
мы
индексируем оба столбца, то сразу получаем то, что нам нужно .
Мы можем создать индекс по (accountid, txdate), поскольку дата тран-
закции является вторым критерием запроса . Создав составной индекс
по обоим столбцам, можно быть уверенным, что SQL-машина сумеет
осуществить эффективный поиск (известный как сканирование диапа-
зона) по индексу . Если с моими тестовыми данными индекс по одному
столбцу увеличил производительность на MySQL в 3,1 раза, то с ин-
дексом по двум столбцам увеличение скорости составило 3,4 раза, так
что теперь программа работает около трех с половиной минут . Однако
Oracle и SQL Server даже с индексом по двум столбцам не дали ускоре-
ния по сравнению с индексом по одному столбцу (табл . 1 .4) .
Таблица 1.4. Коэффициент увеличения скорости после изменения
индекса
Достарыңызбен бөлісу: