1. reverse index 생성
CREATE REVERSE INDEX "notice_logdate" ON "tbl_notice_lists"("logdate" DESC);
2. SQL 수행
select nl.logdate, nl.noticetitle
from tbl_notice_lists nl
using index nl.notice_logdate
근데 결과는 logdate 역순으로 나오지 않고 있네요?
뭐가 잘못된 것일까요 ?
1. reverse index 생성
CREATE REVERSE INDEX "notice_logdate" ON "tbl_notice_lists"("logdate" DESC);
2. SQL 수행
select nl.logdate, nl.noticetitle
from tbl_notice_lists nl
using index nl.notice_logdate
근데 결과는 logdate 역순으로 나오지 않고 있네요?
뭐가 잘못된 것일까요 ?
SQL이 잘못 올라갔네요
select nl.logdate, nl.noticetitle
from tbl_notice_lists nl
where nl.logdat >= '2013-03-01'
using index nl.notice_logdate
질의 수행시 플랜정보를 확인해 보실 필요가 있습니다. using index 를 사용하면 해당 인덱스를 사용하거나, 풀스캔을 합니다.
데이터 건수가 인덱스를 사용할만하지 않으면 풀스캔을 하게 됩니다. 해당 인덱스의 사용가능성을 높이기 위해서는 using index nl.notice_logdate(+) 라고 해보시기 바랍니다. (+) 를 줌으로써 인덱스 사용시 비용을 0으로 설정하여 풀스캔의 비용이 0이 아닌 이상 인덱스를 사용하게 됩니다.
역순으로 정렬된 데이터로 INDEX 생성하고자 하신다면 REVERSE INDEX와 DESC를 동시에 사용하시면 안 되고, 둘 중 하나만 사용하셔야 합니다.
참고로 "REVERSE" 구문은 deprecated 되었으므로, "DESC"를 사용하실 것을 권장합니다.
따라서 내림차순 인덱스를 생성하시려면,
CREATE INDEX "notice_logdate" ON "tbl_notice_lists"("logdate" DESC);
로 생성하시면됩니다.
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
현재는 조건이 없으므로 인덱스를 사용할 필요가 없다고 결정을 합니다. using index 은 해당 인덱스를 이용하여 조건 처리를 하도록 하는 것이지, 조건에 상관없이 무조건 그 인덱스를 사용하라는 것은 아닙니다.
즉, where 절이 있어야 어느 조건에 대하여 인덱스를 사용할지 결정할 수가 있읍니다.
또한 order by 가 있으면 order by 항목과 인덱스를 비교하여 인덱스로 대체할 수 있을지를 판단할 수 있습니다. 다만 이 기능은 4.0 이상부터 가능합니다.