Предполагая, что это Sybase ASE ... <table_name> (X)
- указание индекса, в котором говорится об использовании индекса (в таблице <table_name>
) с идентификатором индекса = X (sysindexes.indid=X
). В вашем примере подсказка говорит об использовании индекса с indid=2
.
Если нет индекса с indid=2
, тогда оптимизатор проигнорирует эту подсказку и go о попытке определить, что (если есть) индекс для использования.
Для перехода на Oracle (или любую другую СУБД в этом отношении) просто удалите (2)
.
Хотя ASE, очевидно, поддерживает эту функцию, не рекомендуется использовать ее, если вы не знаете со 100% уверенностью, что желаемый индекс всегда будет иметь indid=2
. Со временем, по мере добавления / удаления индексов (включая те, которые поддерживают ограничения PK / UNIQ), indid
, присвоенный определенному индексу c, может измениться; последнее, что вам нужно (с точки зрения производительности), - это принудительно использовать неправильный индекс (ie, indid=2
больше не ссылается на какой-либо индекс, который разработчик SQL хотел использовать).