실무에서 해결한 문제를 정리해 올립니다.
제가 유지보수를 맡게된 사이트에서 답변형 게시판의 문제를 해결하는데 사용한
쿼리입니다. 게시물 수가 9000건을 넘습니다.
게시판 페이지를 가면 6~8초정도 기다려야 첫페이지가 나옵니다.
다음페이지로 이동할 때도 걸리는 시간은 마찬가지입니다.
DBA 와 같이 상의하고 테스트한 결과 중요한 차이점을 발견했습니다.
쿼리하는 컬럼을 지정하느냐 아니면 * 를 써서 모두 가져오느냐가 큰 성능의 차이를
보였습니다. 단순히 order by 가 들어가면 정렬(sorting) 때문에 느려지는 것으로 알고
있었는데 6초 이상 걸리던 쿼리가 단 0.2 초만에 해결되었습니다.
select *
from pm2000_qna order by record_no desc, record_depth
와
select record_number, record_no, record_depth, record_depthno, record_title,
record_writer,
writer_email, to_char(record_date,'yyyy/mm/dd') record_date, read_count
from pm2000_qna order by record_no desc, record_depth
는 큰 차이라는 뜻입니다.
그리고,
효율적인 db접속을 위해서 게시물 몽땅 가져와서 rs.next() 로 돌려서 위치를 찾는 것
보다는 sql에서 게시물 수만큼 가져와서 뿌려주는 것이 나은 점에 대해서는 이 사이트 여러
곳에서 토론되고 있는 줄 압니다.
오라클에서는 rownum 이 있죠. 어거지로 쓰는 것 같지만 어쩔 수 없죠. 머리를 굴리는
수밖에요.
^^; 수고를 좀 덜어드리면 좋겠습니다.
select * from (
select * from (
select record_no, record_depth, record_depthno, record_title, record_writer,
writer_email, to_char(record_date,'yyyy/mm/dd') record_date, read_count
from pm2000_qna order by record_no desc, record_depth
) where rownum <= ? order by rownum desc
) where rownum <= ? order by rownum desc
jsp 에선
pstmt.setInt(1,(pageNo+1)*pageSize); // pageNo는 0부터..
pstmt.setInt(1,pageSize);
로 해주면 됩니다.
일단 sqlplus 에서 테스트 해보십시오.
아주 속이 시원하더군요.
부록으로 mysql 버전입니다.
select record_no, record_depth, record_depthno, record_title, ...
from pm2000_qna order by seq desc limit ?, ?
jsp에선
pstmt.setInt(1,pageNo*pageSize); // pageNo는 0부터..
pstmt.setInt(1,pageSize);
하시면 됩니다.
좋은 하루 되십시오.
----
http://okjsp.pe.kr kenu[이 게시물은 관리자님에 의해 2011-10-31 16:47:36 Oracle에서 이동 됨]
댓글 1개
visualp
14년 전
over 구문 사용 하심 조금더 단순 하게 쿼리 만들 수 있습니다.
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 1630 | 17년 전 | 2365 | ||
| 1629 | 17년 전 | 2836 | ||
| 1628 |
인스웨이브시스템즈
|
17년 전 | 4614 | |
| 1627 | 17년 전 | 2673 | ||
| 1626 |
silence
|
17년 전 | 1871 | |
| 1625 |
|
17년 전 | 3314 | |
| 1624 | 17년 전 | 3134 | ||
| 1623 | 17년 전 | 3856 | ||
| 1622 | 17년 전 | 2168 | ||
| 1621 | 17년 전 | 2342 | ||
| 1620 | 17년 전 | 10000 | ||
| 1619 | 17년 전 | 3498 | ||
| 1618 | 18년 전 | 3298 | ||
| 1617 | 18년 전 | 3188 | ||
| 1616 |
|
18년 전 | 2799 | |
| 1615 | 18년 전 | 4162 | ||
| 1614 |
에스카르고
|
18년 전 | 5503 | |
| 1613 | 18년 전 | 3737 | ||
| 1612 | 18년 전 | 3181 | ||
| 1611 | 18년 전 | 3604 | ||
| 1610 |
DHenny
|
18년 전 | 2257 | |
| 1609 | 18년 전 | 2685 | ||
| 1608 |
|
18년 전 | 3919 | |
| 1607 | 18년 전 | 2844 | ||
| 1606 |
|
18년 전 | 4354 | |
| 1605 | 18년 전 | 2073 | ||
| 1604 |
|
18년 전 | 2511 | |
| 1603 |
|
18년 전 | 2408 | |
| 1602 |
|
18년 전 | 3762 | |
| 1601 |
|
18년 전 | 3828 | |
| 1600 | 18년 전 | 2569 | ||
| 1599 | 18년 전 | 2639 | ||
| 1598 | 18년 전 | 2970 | ||
| 1597 |
|
18년 전 | 2801 | |
| 1596 |
|
18년 전 | 2008 | |
| 1595 |
|
18년 전 | 2181 | |
| 1594 | 18년 전 | 4831 | ||
| 1593 | 18년 전 | 4177 | ||
| 1592 | 18년 전 | 2800 | ||
| 1591 | 18년 전 | 2359 | ||
| 1590 | 18년 전 | 2862 | ||
| 1589 | 18년 전 | 2339 | ||
| 1588 |
|
18년 전 | 3501 | |
| 1587 | 18년 전 | 2172 | ||
| 1586 | 18년 전 | 1967 | ||
| 1585 | 18년 전 | 1823 | ||
| 1584 | 18년 전 | 1641 | ||
| 1583 | 18년 전 | 3236 | ||
| 1582 | 18년 전 | 4559 | ||
| 1581 | 18년 전 | 4838 | ||
| 1580 |
|
18년 전 | 2128 | |
| 1579 | 18년 전 | 3579 | ||
| 1578 | 18년 전 | 3303 | ||
| 1577 | 18년 전 | 4590 | ||
| 1576 | 18년 전 | 3235 | ||
| 1575 | 18년 전 | 4233 | ||
| 1574 |
개발전문가
|
18년 전 | 3921 | |
| 1573 |
mixdesign
|
18년 전 | 3609 | |
| 1572 |
mixdesign
|
18년 전 | 3009 | |
| 1571 |
mixdesign
|
18년 전 | 2905 | |
| 1570 | 18년 전 | 3482 | ||
| 1569 |
mixdesign
|
18년 전 | 2133 | |
| 1568 |
mixdesign
|
18년 전 | 2089 | |
| 1567 | 18년 전 | 5492 | ||
| 1566 |
mixdesign
|
18년 전 | 2668 | |
| 1565 |
mixdesign
|
18년 전 | 2409 | |
| 1564 | 18년 전 | 2717 | ||
| 1563 | 18년 전 | 2063 | ||
| 1562 | 18년 전 | 3047 | ||
| 1561 | 18년 전 | 10012 | ||
| 1560 |
행복속네잎크로버
|
18년 전 | 1909 | |
| 1559 | 18년 전 | 2826 | ||
| 1558 |
1111111
|
18년 전 | 2864 | |
| 1557 |
1111111
|
18년 전 | 2118 | |
| 1556 |
1111111
|
18년 전 | 2956 | |
| 1555 |
1111111
|
18년 전 | 3956 | |
| 1554 |
1111111
|
18년 전 | 2917 | |
| 1553 |
1111111
|
18년 전 | 2295 | |
| 1552 |
1111111
|
18년 전 | 6011 | |
| 1551 |
1111111
|
18년 전 | 3638 | |
| 1550 |
1111111
|
18년 전 | 6311 | |
| 1549 |
1111111
|
18년 전 | 2410 | |
| 1548 |
1111111
|
18년 전 | 2337 | |
| 1547 |
1111111
|
18년 전 | 2358 | |
| 1546 |
1111111
|
18년 전 | 3307 | |
| 1545 |
1111111
|
18년 전 | 3165 | |
| 1544 |
1111111
|
18년 전 | 1952 | |
| 1543 |
1111111
|
18년 전 | 3686 | |
| 1542 |
1111111
|
18년 전 | 1602 | |
| 1541 |
1111111
|
18년 전 | 1346 | |
| 1540 |
1111111
|
18년 전 | 1368 | |
| 1539 |
1111111
|
18년 전 | 1524 | |
| 1538 |
1111111
|
18년 전 | 1614 | |
| 1537 |
스카이부아
|
18년 전 | 3403 | |
| 1536 |
1111111
|
18년 전 | 2244 | |
| 1535 |
1111111
|
18년 전 | 1694 | |
| 1534 |
1111111
|
18년 전 | 2093 | |
| 1533 |
1111111
|
18년 전 | 4593 | |
| 1532 |
1111111
|
18년 전 | 2320 | |
| 1531 |
1111111
|
18년 전 | 2964 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기