Номер против Varchar2 в пункте, где для производительности - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть таблица с STATUS столбцом VARCHAR2(25) и STATE столбцом VARCHAR2(2) вместе с несколькими другими столбцами.

При фильтрации записей из таблицы я использую столбец STATUSа также столбец STATE в моем запросе.

SELECT * FROM TAB WHERE STATUS = 'Active' AND STATE = 'WA';

Поскольку столбцы STATUS и STATE имеют тип данных VARCHAR2, я хотел бы ввести новые два столбца 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 vs VARCHAR2 только тип данных.В запросе не существует явного или явного преобразования типов данных.

Будет ли повышение производительности благодаря наличию типа данных NUMBER вместо VARCHAR2 в WHERE в Oracle Database?

Я хотел бы знать, будет ли тип данных NUMBER иметь более высокую производительность по сравнению с типом данных VARCHAR2 в предложении WHERE.Это правда?

Спасибо.

1 Ответ

0 голосов
/ 18 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...