2010-05-26 4 views
4

Таблица в Sybase имеет уникальный столбец varchar (32) и несколько других столбцов. Он также индексируется в этой колонке.Быстрее вставить отсортированные данные в таблицу Sybase?

С регулярными интервалами мне нужно усечь его и повторно заполнить его новыми данными из других таблиц.

insert into MyTable 
    select list_of_columns 
    from OtherTable 
    where some_simple_conditions 
    order by MyUniqueId 

Если мы имеем дело с несколькими тысячами строк, это помогло бы ускорить insert если мы имеем пункт order by для select? Если да, то это усиление вовремя компенсирует дополнительное время, необходимое для заказа запроса select?

Я мог бы попробовать это, но в настоящее время мой набор данных невелик, и результаты не говорят много.

ответ

2

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

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

Еще одна мысль - в зависимости от того, как Sybase выполняет индексацию, передавая отсортированный список может замедлить его. Попробуйте сравнить с ORDER BY RANDOM(), чтобы убедиться, что это так.

0

Я не верю скоростям заказов в INSERT, поэтому не запускайте ORDER BY в тщетной попытке улучшить производительность.

0

Я бы сказал, что на самом деле не имеет значения, в каком порядке вы выполняете эти функции. Просто используйте обычный способ вставки INSERT INTO и выполните остальные действия после этого.

0

Я не могу сказать о sybase, но MS SQL вставляет быстрее, если записи отсортированы тщательно. Сортировка может минимизировать число расширений индекса. Как вы знаете, лучше заполнить таблицу ant, а затем создать индекс. Сортировка данных перед вставкой приводит к аналогичному эффекту.

0

Порядок, в который вы вставляете данные, обычно не улучшить производительность. Проблемы, которые влияют на скорость вставки, больше связаны с вашими механизмами баз данных для хранения данных, чем с порядком вставок.

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

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

0

Показатели отбрасывания и воссоздания (по крайней мере, на SQL-сервере) являются, безусловно, лучшим способом для вставки. По крайней мере, некоторое время ;-) Серьезно, хотя, если вы не замечаете серьезных проблем с производительностью, не связывайтесь с ним.

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