У меня есть таблица со столбцом STATUS
VARCHAR2(25)
и столбцом STATE
VARCHAR2(2)
вместе с несколькими столбцами.
При фильтрации записей из таблицы я использую столбец STATUS, а также столбец STATE в своем запросе.
SELECT * FROM TAB WHERE STATUS = 'Active' AND STATE = 'WA';
Поскольку столбцы STATUS
и STATE
имеют тип данных VARCHAR2
, я хотел бы STATUS_ID
в таблицу два новых столбца STATUS_ID
и STATUS_ID
данных NUMBER
. Значения STATUS
и STATE
заменяются на NUMERIC
для STATUS_ID
и STATE_ID
. Так что я могу использовать столбец NUMBER
вместо столбца VARCHAR2
в WHERE
.
SELECT * FROM TAB WHERE STATUS_ID = 1 AND STATE_ID = 2;
Я сравниваю только NUMBER
NUMBER
и VARCHAR2
VARCHAR2
. В запросе не существует явного или явного преобразования типов данных.
Будет ли повышение производительности, если в WHERE
в Oracle Database будет использоваться тип данных NUMBER
вместо VARCHAR2
?
Я хотел бы знать, будет ли тип данных NUMBER
иметь более высокую производительность по сравнению с VARCHAR2
данных VARCHAR2
в предложении WHERE. Это правда?
Благодарю.
Производительность будет такой же, поскольку Oracle хранит числа в виде упакованных строк (в отличие от некоторых других баз данных). Единственное, что вам следует учитывать перед выбором формата, - это операции, которые вы собираетесь использовать со значением, количество вычислительной мощности, которое потребуется для преобразования или поиска значений.