Работа Oracle с несколькими теми же индексами столбца

К сожалению, не в C #, поскольку для этого вам понадобится фильтр исключений, а C # не раскрывает эту функцию MSIL. VB.NET имеет такую ​​возможность, например,

Catch ex As Exception When TypeOf ex Is FormatException OrElse TypeOf ex Is OverflowException

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

Action onError = () => WebId = Guid.Empty;
try
{
    // something
}
catch (FormatException)
{
    onError();
}
catch (OverflowException)
{
    onError();
}
5
задан Whytespot 19 June 2009 в 20:37
поделиться

4 ответа

Google - мой лучший друг:

http://www.orafaq.com/node/926

Суть этой статьи:

If 2 indexes ( I1 and I2 ) exist for a table and
   the number of columns in Index I1 is less or equal to the number of column in index I2 and
   index I1 has the same columns in the same order as leading columns of index I2 
Then
   If index I1 is UNIQUE then
      If index I2 is used to support Foregh Key or for Index Overload then
         Do Nothing
      Else
         Index I2 can be DROPPED
      End If
   Else
      Index I1 can be DROPPED
   End If
End If

И я согласен с этим! Фактически, поищите в Google "повторяющиеся индексы", чтобы получить другой ответ.

5
ответ дан 14 December 2019 в 01:15
поделиться

Второй индекс является своего рода избыточным - любая операция, использующая Index2, может использовать Index 1. Кроме того, запись будет немного медленнее, так как нужно обновить другой индекс.

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

1
ответ дан 14 December 2019 в 01:15
поделиться

есть вероятность, что, если ваша статистика устареет, оптимизатор может выбрать индекс 2, когда нужен индекс 1. (подсказка оптимизатору, конечно, решит эту проблему.)

1
ответ дан 14 December 2019 в 01:15
поделиться

Второй индекс отличается и сам по себе не является избыточным.

Как насчет этого запроса:

SELECT DISTINCT ColA FROM TABLE WHERE ColA IS NOT NULL;

Oracle может полностью ответить на этот вопрос из индекса 2. Теперь ожидается, что индекс 2 быть маленьким (меньше блоков), чем индекс 1. Это означает, что это лучший индекс для вышеуказанного запроса.

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

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

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

2
ответ дан 14 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: