Home > Ask the Oracle Experts > Database Design and Architecture Questions & Answers > Better performance with varchar2(1) or number(1)?
Ask The Oracle Expert: Questions & Answers
EMAIL THIS

Better performance with varchar2(1) or number(1)?

Brian Peasland EXPERT RESPONSE FROM: Brian Peasland

Pose a Question
Other Oracle Categories
Meet all Oracle Experts
Become an Expert for this site


Oracle tips, scripts, and expert advice
Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


>
QUESTION POSED ON: 03 February 2006
Since Oracle table structures do not support a boolean datatype, I am faced with a choice (make it a varchar2(1) or number(1)), with contents of Y,N or 1,0. The questions I have are:
  1. From a comparison perspective, which provides better performance? Comparison of a number or string?
  2. Which solution takes up less storage? Number(1) or varchar2(1)?
  3. The results will be mapped into a J2EE data structure supporting a boolean datatype. Which method (from a performance perspective) is better, number to boolean or DECODE(boolstring, 'Y', 1, 'N', 0)?
Many thanks in advance for your thoughts!

>
EXPERT RESPONSE

For almost every circumstance, comparing numbers or strings will make very little difference to the performance of your application. You will most likely find that using one datatype or the other will not impact your application in any noticable way. There are many other aspects of application performance (such as disk contention or poorly written SQL) that can have a very noticable impact on your application's performance.

The VARCHAR2(1) datatype specification will take up to one byte of storage space. The NUMBER(1) datatype will take at least two bytes since numbers have to store both the exponent and the mantissa of the number's representation. That being said, it is my opinion that worrying about storage requirements at this level takes more effort than it is worth. You will not realize much from your work.

I am not 100% sure how J2EE will be impacted by NUMBER to BOOLEAN or using DECODE as you have suggested. But it should be very simple for you to create a test case. In your J2EE application, query the data from one table that stores the value as a NUMBER and then do the same operation with VARCHAR2(1). Time the operations using Java's timing routines. Which works faster? Do not forget to run the test case multiple times so as to obtain an average and remove a bad run's anomolies. I will bet you will find that there is very little difference in the overall runtimes.


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


RELATED CONTENT
Database Design and Architecture
Why am I getting an Oracle error when issuing the RECOVER DATABASE command?
Can I add multiple datafiles and make use of all the temporary datafiles at the same time?
What's the best tape backup strategy for 10g RAC?
Checkpoint vs. commit process
How does an INSERT/UPDATE statement behave when executed compared to a SELECT statement?
Can I resize the SYSTEM tablespace?
What is the difference between an instance and mounting in Oracle?
How to implement a ref cursor called in a stored procedure
In Oracle, does the number of columns in a table affect the performance during SELECT/INSERT/UPDATE?
Performance issues in Oracle 9i

Oracle database design
Weighing remote database administration pros and cons takes care
Oracle Database 11g makes waves at Burlington Coat Factory
How to create a database link in Oracle
Data modeling tools no substitute for hard work
How do I do that in Oracle?
The Oracle Database user's guide to Oracle OpenWorld 2007
Oracle OpenWorld 2007 Special Report
How many redo log files?
How to move tables from system tablespace to user tablespace
ORA-12560 error with Oracle 10g Instant Client

Oracle database performance problems and tuning
Oracle 11g data compression
Varchar or number for better performance?
Do statistics on SYS-owned objects hurt performance in 10g?
Inside the Oracle 11g SQL Performance Advisor, part 1
Inside the Oracle 11g SQL Performance Advisor, part 2
Difference between driving table and driver table in Oracle
Best design for E-Business Suite on hard drive
20GB data dictionary causing performance problems
Using the cost-based optimizer to improve Database 10g performance
Online tablespace reorganization in Oracle 9i

RELATED GLOSSARY TERMS
Terms from Whatis.com − the technology online dictionary
extent  (SearchOracle.com)
field  (SearchOracle.com)
flexfield  (SearchOracle.com)
foreign key  (SearchOracle.com)
quad tree  (SearchOracle.com)
record  (SearchOracle.com)
row  (SearchOracle.com)
splay tree  (SearchOracle.com)

RELATED RESOURCES
2020software.com, trial software downloads for accounting software, ERP software, CRM software and business software systems
Search Bitpipe.com for the latest white papers and business webcasts
Whatis.com, the online computer dictionary



Search and Browse the Expert Answer Center
Search and browse more than 25,000 question and answer pairs from more than 250 TechTarget industry experts.
Browse our Expert Advice

HomeNewsTopicsTipsAsk the ExpertsMultimediaWhite PapersProductsBlogs
About Us  |  Contact Us  |  For Advertisers  |  For Business Partners  |  Site Index  |  RSS
SEARCH 
TechTarget provides enterprise IT professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective IT purchase decisions and managing their organizations' IT projects - with its network of technology-specific Web sites, events and magazines.

TechTarget Corporate Web Site  |  Media Kits  |  Reprints  |  Site Map




All Rights Reserved, Copyright 2003 - 2008, TechTarget | Read our Privacy Policy
  TechTarget - The IT Media ROI Experts