Char or varchar2 that’s the question. Men zegt dat char sneller is dan varchar2. Maar dat klopt niet, want char is een subtype van varchar2 waarbij rechts wordt aangevuld met spaties.
Daarom maar een klein vingeroefingetje gedaan, waarbij ik een tabel maak met 2 kolommen (een char(30) en een varchar2(30) en deze tabel vervolgens vul met 1 miljoen random waarden, variƫrend van lengte 1 tot lengte 30. Vervolgens doe ik een querie met een zoekwaarde op de ene en vervolgens op de andere kolom. En hou de stopwatch in mijn hand. (Bij wijze van spreken, ik kijk naar de doorlooptijd in Toad).
CREATE TABLE char_test(ch CHAR(30), vc VARCHAR2(30)); TRUNCATE TABLE char_test; DECLARE l_val VARCHAR2(30); BEGIN FOR i IN 1..1000000 LOOP l_val:= DBMS_RANDOM.STRING('A', ROUND(DBMS_RANDOM.VALUE(1,30))); INSERT INTO char_test VALUES (l_val,l_val); END LOOP; END;
Daarna de volgende queries gedraaid:
SELECT * FROM char_test WHERE ch=’gHtGuiEMonFeiihbvAxdtkD’;
duurde 163 ms
SELECT * FROM char_test WHERE vc=’gHtGuiEMonFeiihbvAxdtkD’;
duurde 84 ms
Lijkt erop dat de varchar2 query toch echt wel 2 keer zo snel is.