Question: Which of the below would be the best way to create an Index, so that my query gives faster results?

My query is:

```
select emp_name,emp_last_name, salary 
from employees_table 
where salary <=2000;

1. create index emp_index on employees_table (salary);

2. create index emp_index on employees_table (emp_name,emp_last_name,salary);

```

Answer: 
In principle `create index emp_index on employees_table (emp_name,emp_last_name,salary);` would be the better one, because for your query Oracle has to read only the index but not any table data.

However, this means you create a separate index for each particular query which is certainly an overkill.
For 2 index Oracle may will be select table access full, if disctinct values in firsts columns of index to much, Oracle give you Table access full, if distinct values in first columns of index not much then you give index skip scan. 

For first index you will see “index range scan” + “table access by rowid”.... 

but for both index’s - if sql returns >5-7% rows then Oracle maybe want to use “Table access full”...

All depends on your data in Table and count return rows