실무에서 해결한 문제를 정리해 올립니다.
제가 유지보수를 맡게된 사이트에서 답변형 게시판의 문제를 해결하는데 사용한
쿼리입니다. 게시물 수가 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 구문 사용 하심 조금더 단순 하게 쿼리 만들 수 있습니다.
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 1930 | 17년 전 | 3001 | ||
| 1929 | 17년 전 | 1878 | ||
| 1928 | 17년 전 | 3992 | ||
| 1927 | 17년 전 | 1409 | ||
| 1926 |
지엔소프트
|
17년 전 | 1126 | |
| 1925 |
보드타는찌니
|
17년 전 | 1243 | |
| 1924 |
choijinhee
|
17년 전 | 1126 | |
| 1923 | 17년 전 | 1388 | ||
| 1922 | 17년 전 | 1746 | ||
| 1921 | 17년 전 | 2337 | ||
| 1920 | 17년 전 | 2415 | ||
| 1919 | 17년 전 | 1418 | ||
| 1918 | 17년 전 | 1168 | ||
| 1917 | 17년 전 | 2437 | ||
| 1916 | 17년 전 | 2869 | ||
| 1915 |
|
17년 전 | 3233 | |
| 1914 | 17년 전 | 3171 | ||
| 1913 | 17년 전 | 2338 | ||
| 1912 | 17년 전 | 3754 | ||
| 1911 | 17년 전 | 3184 | ||
| 1910 | 17년 전 | 5506 | ||
| 1909 | 17년 전 | 2657 | ||
| 1908 | 17년 전 | 1860 | ||
| 1907 | 17년 전 | 1934 | ||
| 1906 | 17년 전 | 1775 | ||
| 1905 | 17년 전 | 1706 | ||
| 1904 | 17년 전 | 2767 | ||
| 1903 | 17년 전 | 1893 | ||
| 1902 | 17년 전 | 1581 | ||
| 1901 | 17년 전 | 2071 | ||
| 1900 |
stuartkim
|
17년 전 | 1137 | |
| 1899 | 17년 전 | 1667 | ||
| 1898 | 17년 전 | 2882 | ||
| 1897 | 17년 전 | 2126 | ||
| 1896 | 17년 전 | 1820 | ||
| 1895 | 17년 전 | 2036 | ||
| 1894 | 17년 전 | 1324 | ||
| 1893 | 17년 전 | 1716 | ||
| 1892 | 17년 전 | 1214 | ||
| 1891 | 17년 전 | 1776 | ||
| 1890 | 17년 전 | 1804 | ||
| 1889 | 17년 전 | 1040 | ||
| 1888 | 17년 전 | 3136 | ||
| 1887 | 17년 전 | 4316 | ||
| 1886 | 17년 전 | 2462 | ||
| 1885 | 17년 전 | 7473 | ||
| 1884 | 17년 전 | 3837 | ||
| 1883 | 17년 전 | 4169 | ||
| 1882 | 17년 전 | 2425 | ||
| 1881 | 17년 전 | 2888 | ||
| 1880 | 17년 전 | 3638 | ||
| 1879 | 17년 전 | 4006 | ||
| 1878 | 17년 전 | 3166 | ||
| 1877 | 17년 전 | 3147 | ||
| 1876 | 17년 전 | 3295 | ||
| 1875 | 17년 전 | 2463 | ||
| 1874 | 17년 전 | 2059 | ||
| 1873 | 17년 전 | 3109 | ||
| 1872 | 17년 전 | 3258 | ||
| 1871 | 17년 전 | 4610 | ||
| 1870 | 17년 전 | 1592 | ||
| 1869 | 17년 전 | 2616 | ||
| 1868 | 17년 전 | 2689 | ||
| 1867 | 17년 전 | 1901 | ||
| 1866 | 17년 전 | 2220 | ||
| 1865 | 17년 전 | 1837 | ||
| 1864 | 17년 전 | 2371 | ||
| 1863 | 17년 전 | 3777 | ||
| 1862 | 17년 전 | 3895 | ||
| 1861 | 17년 전 | 2083 | ||
| 1860 | 17년 전 | 1360 | ||
| 1859 | 17년 전 | 1496 | ||
| 1858 |
|
17년 전 | 1650 | |
| 1857 | 17년 전 | 1633 | ||
| 1856 |
보드타는찌니
|
17년 전 | 1397 | |
| 1855 | 17년 전 | 1543 | ||
| 1854 |
|
17년 전 | 1360 | |
| 1853 | 17년 전 | 1849 | ||
| 1852 | 17년 전 | 2749 | ||
| 1851 | 17년 전 | 1849 | ||
| 1850 |
|
17년 전 | 1403 | |
| 1849 |
|
17년 전 | 1690 | |
| 1848 |
|
17년 전 | 2329 | |
| 1847 | 17년 전 | 1944 | ||
| 1846 |
은사시나무
|
17년 전 | 1264 | |
| 1845 |
갈색야생마
|
17년 전 | 5904 | |
| 1844 |
갈색야생마
|
17년 전 | 3282 | |
| 1843 |
갈색야생마
|
17년 전 | 3178 | |
| 1842 |
갈색야생마
|
17년 전 | 2589 | |
| 1841 |
갈색야생마
|
17년 전 | 2770 | |
| 1840 |
갈색야생마
|
17년 전 | 2719 | |
| 1839 |
갈색야생마
|
17년 전 | 3226 | |
| 1838 |
갈색야생마
|
17년 전 | 2353 | |
| 1837 |
갈색야생마
|
17년 전 | 2471 | |
| 1836 |
갈색야생마
|
17년 전 | 2532 | |
| 1835 |
갈색야생마
|
17년 전 | 2525 | |
| 1834 |
갈색야생마
|
17년 전 | 2667 | |
| 1833 |
갈색야생마
|
17년 전 | 3188 | |
| 1832 |
갈색야생마
|
17년 전 | 2701 | |
| 1831 |
갈색야생마
|
17년 전 | 1427 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기