Using Functions in QueriesWhen using functions in SQL statements it is best to keep the functions away from any columns involving index matching unless function-based indexes are available and can be created.
Do’s
SELECT account_name, trans_date, amount
FROM transaction
WHERE account_name LIKE 'CAPITAL%';
Don’ts
SELECT account_name, trans_date, amount
FROM transaction
WHERE SUBSTR(account_name,1,7) = 'CAPITAL';
Sequences
A sequence is often used to create unique integer identifiers as primary keys for tables. A sequence is a distinct database object and is accessed as sequence.NEXTVAL and sequence.CURRVAL.
Use sequences for unique integer identifiers; they are centralized, more controllable, more easily maintained, and perform better than other methods of counting.
Do’s
INSERT INTO supplier (supplier_id, name, ticker)
VALUES (supplier_seq.NEXTVAL,'A new supplier', 'TICK');
Don’ts
INSERT INTO supplier (supplier_id, name, ticker)
VALUES ((SELECT MAX(supplier_id)+1
FROM supplier), 'A new supplier', 'TICK');
Equi, Anti, and Range
Using an equals sign (equi) is the fastest comparison condition if a unique index exists. Any type of anti comparison such as != or NOT is looking for what is not in a table and thus must read the entire table; sometimes full index scans can be used.
Do’s
SELECT account_name, trans_date, amount
FROM transaction
WHERE amount > 0; SELECT account_name, trans_date, amount
FROM transaction
WHERE amount != 0;
Don’ts
SELECT account_name, trans_date, amount
FROM transaction
WHERE amount > 0; SELECT account_name, trans_date, amount
FROM transaction
WHERE amount NOT = 0;
LIKE Pattern MatchingIn general, since LIKE will match patterns which are in no way related to indexes, LIKE will usually read an entire table.
https://www.facebook.com/datastage4you
https://twitter.com/datagenx
https://plus.google.com/+AtulSingh0/posts
https://datagenx.slack.com/messages/datascience/
No comments:
Post a Comment