1. Tạo index tăng tốc độ truy vấn tên nhân viên:
Câu lệnh:
SELECT * FROM emp WHERE UPPER(emp_name) LIKE 'JOH%';
Tạo index:
CREATE INDEX idx ON emp (UPPER(emp_name));
Câu lệnh
SELECT id, geo, area(geo), desc
FROM rivers
WHERE area(geo) >5000
Tạo index:
2. Với câu lệnh truy vấn trên biểu thức:
SELECT a FROM t WHERE a + b * (c - 1) < 100;
CREATE INDEX idx ON t (a + b * (c - 1), a, b);
SELECT employee_id, last_name, first_name,
12*salary*commission_pct AS "ANNUAL SAL"
FROM employees
WHERE (12 * salary * commission_pct) < 30000
ORDER BY "ANNUAL SAL" DESC;
EMPLOYEE_ID LAST_NAME FIRST_NAME ANNUAL SAL
----------- ------------------------- -------------------- ----------
159 Smith Lindsey 28800
151 Bernstein David 28500
152 Hall Peter 27000
160 Doran Louise 27000
175 Hutton Alyssa 26400
149 Zlotkey Eleni 25200
169 Bloom Harrison 24000
CREATE INDEX emp_total_sal_idx
ON employees (12 * salary * commission_pct, salary, commission_pct);
3. Tạo index hỗ trợ sắp xếp chuỗi ký tự dựa trên ngôn ngữ của từng quốc gia:
SELECT * FROM t_table ORDER BY name;
CREATE INDEX nls_index ON t_table NLSSORT(name, 'NLS_SORT = German'));
4. Sử dụng index trên nhiều cột khác nhau:
SELECT * FROM emp
WHERE UPPER(emp_name) LIKE 'JOH%'
ORDER BY name;
CREATE INDEX empi ON emp UPPER ((ename), NLSSORT(ename));
----
SELECT *
FROM employees
WHERE UPPER(first_name) = 'AUDREY';
CREATE INDEX emp_fname_uppercase_idx
ON employees ( UPPER(first_name) );
5.CASE
CREATE INDEX cust_valid_idx
ON customers ( CASE cust_valid WHEN 'A' THEN 'A' END );