Номер против Varchar2 в пункте, где для производительности

0

У меня есть таблица со столбцом 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. Это правда?

Благодарю.

  • 0
    Почему бы не проверить это самостоятельно и не узнать?
  • 0
    Без добавления индексов добавление двух столбцов не поможет, вы просто увеличите длину каждой строки на несколько байтов и займет больше времени для чтения с диска. Полная замена столбцов (добавление двух новых и удаление старых двух) поможет немного, так как теперь строки будут на много байтов короче и будут меньше считывать данные с диска. Индексирование очень поможет, что позволит вам не читать нерелевантные строки вместе. Замена столбцов И индексация также поможет немного, уменьшив размер структуры данных индекса (также хранящейся на диске). Вы должны поэкспериментировать и увидеть.
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

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

  • 0
    Спасибо. Это зависит от количества байтов, которые содержит символьный столбец? Пока столбец Символ (размер в байтах) не превышает размер числа, производительность будет одинаковой. Правильно ли мое понимание? Для более длинного символьного столбца я могу найти улучшение производительности, скажем, например, Имя клиента с Идентификатором клиента.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню