실무에서 해결한 문제를 정리해 올립니다.
제가 유지보수를 맡게된 사이트에서 답변형 게시판의 문제를 해결하는데 사용한
쿼리입니다. 게시물 수가 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년 전 | 2999 | ||
| 1929 | 17년 전 | 1876 | ||
| 1928 | 17년 전 | 3987 | ||
| 1927 | 17년 전 | 1402 | ||
| 1926 |
지엔소프트
|
17년 전 | 1120 | |
| 1925 |
보드타는찌니
|
17년 전 | 1234 | |
| 1924 |
choijinhee
|
17년 전 | 1118 | |
| 1923 | 17년 전 | 1373 | ||
| 1922 | 17년 전 | 1738 | ||
| 1921 | 17년 전 | 2335 | ||
| 1920 | 17년 전 | 2412 | ||
| 1919 | 17년 전 | 1415 | ||
| 1918 | 17년 전 | 1164 | ||
| 1917 | 17년 전 | 2431 | ||
| 1916 | 17년 전 | 2860 | ||
| 1915 |
|
17년 전 | 3226 | |
| 1914 | 17년 전 | 3166 | ||
| 1913 | 17년 전 | 2330 | ||
| 1912 | 17년 전 | 3748 | ||
| 1911 | 17년 전 | 3176 | ||
| 1910 | 17년 전 | 5499 | ||
| 1909 | 17년 전 | 2649 | ||
| 1908 | 17년 전 | 1851 | ||
| 1907 | 17년 전 | 1932 | ||
| 1906 | 17년 전 | 1771 | ||
| 1905 | 17년 전 | 1701 | ||
| 1904 | 17년 전 | 2764 | ||
| 1903 | 17년 전 | 1884 | ||
| 1902 | 17년 전 | 1573 | ||
| 1901 | 17년 전 | 2062 | ||
| 1900 |
stuartkim
|
17년 전 | 1128 | |
| 1899 | 17년 전 | 1659 | ||
| 1898 | 17년 전 | 2877 | ||
| 1897 | 17년 전 | 2116 | ||
| 1896 | 17년 전 | 1811 | ||
| 1895 | 17년 전 | 2024 | ||
| 1894 | 17년 전 | 1313 | ||
| 1893 | 17년 전 | 1707 | ||
| 1892 | 17년 전 | 1210 | ||
| 1891 | 17년 전 | 1769 | ||
| 1890 | 17년 전 | 1796 | ||
| 1889 | 17년 전 | 1036 | ||
| 1888 | 17년 전 | 3134 | ||
| 1887 | 17년 전 | 4310 | ||
| 1886 | 17년 전 | 2455 | ||
| 1885 | 17년 전 | 7462 | ||
| 1884 | 17년 전 | 3826 | ||
| 1883 | 17년 전 | 4159 | ||
| 1882 | 17년 전 | 2419 | ||
| 1881 | 17년 전 | 2880 | ||
| 1880 | 17년 전 | 3627 | ||
| 1879 | 17년 전 | 4002 | ||
| 1878 | 17년 전 | 3159 | ||
| 1877 | 17년 전 | 3143 | ||
| 1876 | 17년 전 | 3290 | ||
| 1875 | 17년 전 | 2459 | ||
| 1874 | 17년 전 | 2054 | ||
| 1873 | 17년 전 | 3104 | ||
| 1872 | 17년 전 | 3250 | ||
| 1871 | 17년 전 | 4605 | ||
| 1870 | 17년 전 | 1581 | ||
| 1869 | 17년 전 | 2613 | ||
| 1868 | 17년 전 | 2686 | ||
| 1867 | 17년 전 | 1896 | ||
| 1866 | 17년 전 | 2214 | ||
| 1865 | 17년 전 | 1828 | ||
| 1864 | 17년 전 | 2364 | ||
| 1863 | 17년 전 | 3767 | ||
| 1862 | 17년 전 | 3884 | ||
| 1861 | 17년 전 | 2077 | ||
| 1860 | 17년 전 | 1353 | ||
| 1859 | 17년 전 | 1492 | ||
| 1858 |
|
17년 전 | 1638 | |
| 1857 | 17년 전 | 1621 | ||
| 1856 |
보드타는찌니
|
17년 전 | 1384 | |
| 1855 | 17년 전 | 1529 | ||
| 1854 |
|
17년 전 | 1353 | |
| 1853 | 17년 전 | 1843 | ||
| 1852 | 17년 전 | 2742 | ||
| 1851 | 17년 전 | 1842 | ||
| 1850 |
|
17년 전 | 1396 | |
| 1849 |
|
17년 전 | 1679 | |
| 1848 |
|
17년 전 | 2321 | |
| 1847 | 17년 전 | 1940 | ||
| 1846 |
은사시나무
|
17년 전 | 1258 | |
| 1845 |
갈색야생마
|
17년 전 | 5898 | |
| 1844 |
갈색야생마
|
17년 전 | 3280 | |
| 1843 |
갈색야생마
|
17년 전 | 3174 | |
| 1842 |
갈색야생마
|
17년 전 | 2589 | |
| 1841 |
갈색야생마
|
17년 전 | 2769 | |
| 1840 |
갈색야생마
|
17년 전 | 2718 | |
| 1839 |
갈색야생마
|
17년 전 | 3222 | |
| 1838 |
갈색야생마
|
17년 전 | 2350 | |
| 1837 |
갈색야생마
|
17년 전 | 2470 | |
| 1836 |
갈색야생마
|
17년 전 | 2530 | |
| 1835 |
갈색야생마
|
17년 전 | 2520 | |
| 1834 |
갈색야생마
|
17년 전 | 2658 | |
| 1833 |
갈색야생마
|
17년 전 | 3182 | |
| 1832 |
갈색야생마
|
17년 전 | 2698 | |
| 1831 |
갈색야생마
|
17년 전 | 1425 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기