링크 : http://blog.daum.net/sychomad/2522846


제어판 바로실행 명령어

Contrl Panel의 약자로, 제어판에 나타나는 설정 항목 파일이며, EXE파일과 같이 실행이 가능하다. 일례로 디스플레이 항목의 파일인 


desk.cpl파일은 더블 클릭하면 디스플레이 등록 정보가 실행된다. 각 제어판의 항목과 해당 CPL파일의 이름은 다음과 같다.

 

control  제어판

Access.cpl  내게 필요한 옵션

appwiz.cpl   프로그램 추가/제거

bthprops.cpl   블루투스장치설정

desk.cpl   디스플레이 등록정보

firewall.cpl   Windows방화벽

hdwwiz.cpl   새하드웨어추가마법사

inetcpl.cpl   인터넷 등록정보

intl.cpl   국가 및 언어옵션

irprops.cpl   적외선포트 설정

joy.cpl   게임컨트롤러

main.cpl   마우스등록정보

mmsys.cpl   사운드및 오디오장치등록정보

ncpa.cpl   네트워크연결

netsetup.cpl   네트워크설정마법사

nusrmgr.cpl   사용자계정

nwc.cpl   네트워크 게이트웨이

odbccp32.cpl   ODBC데이터원본 관리자

powercfg.cpl    전원옵션 등록정보

sysdm.cpl   시스템등록정보

telephon.cpl   전화및모뎀 옵션  

timedate.cpl   날짜 및 시간 등록정보

wscui.cpl   Windows 보안센터

wuaucpl.cpl   자동업데이트

Sapi.cpl   텍스트 음성 변환설정

control Admintools   관리도구

control Folders   폴더옵션

control Userpasswords   사용자 계정

 

관리콘솔 명령어

certmgr.msc : 인증서

ciadv.msc : 인덱싱서비스

ntmsmgr.msc : 이동식저장소

ntmsoprq.msc : 이동식저장소 운영자 요청

secpol.msc : 로컬보안정책

wmimgmt.msc : WMI(Windows Management Infrastructure)

compmgmt.msc : 컴퓨터 관리

devmgmt.msc : 장치관리자

diskmgmt.msc : 디스크 관리

dfrg.msc : 디스크 조각모음

eventvwr.msc : 이벤트 뷰어

fsmgmt.msc : 공유폴더

gpedit.msc : 로컬 컴퓨터 정책

lusrmgr.msc : 로컬 사용자 및 그룹

perfmon.msc : 성능모니터뷰

rsop.msc : 정책의 결과와 집합

secpol.msc : 로컬 보안설정

services.msc : 서비스

C:\WINDOWS\system32\Com\comexp.msc : 구성요소서비스

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorcfg.msc : .NET Configuration 1.1

 

 

기타 실행 명령어

cmd : 도스명령프롬프트 실행,  단, 윈98은 command

shutdown -i : GUI화면으로 시스템 종료, 재부팅 가능

shutdown -a : 종료 설정 중지

netstat : 인터넷 접속 상황

ipconfig /all : ip주소,게이트웨이,서브넷마스크, DNS서버주소,physical주소

dxdiag : 다이렉트 - X 상태 정보 화면

cleanmgr : 디스크 정리

regedit  : 레지스트리 편집기

netsetup : 네트워크 설정 마법사

calc : 계산기

charmap : 문자표

pbrush , mspaint  : 그림판

cleanmgr : 디스크정리

clipbrd : 클립보드에 복사된 내용 표시

control : 제어판

dxdiag : 다이렉트X 진단도구 및 그래픽과 사운드의 세부정보를 보여줌

eudcedit  : 용자 정의 문자 편집기

explorer : 탐색기

magnify : 돋보기

osk : 화상키보드

winmine : 지뢰찾기

sndrec32 녹음기

wordpad : 워드패드

sndvol32 : 시스템 사운드 등록정보,볼륨조절

sysedit : autoexec.bat, config.sys, win.ini, system.ini 시스템구성편집기

systray : 사운드 볼륨설정 노란색 스피커 아이콘을 트라이목록에 띄움

mobsync : 동기화

msconfig : 시스템 구성요소 유틸리티

msinfo32 : 시스템정보

mstsc : 원격 데스크톱 연결

netstat -na : 현재 열린포트와 TCP/IP 프로토콜정보를 보여줌, 열린포트로 트라이목마형 바이러스 침투 유무확인가능

notepad : 메모장

wab : 주소록

ntbackup : 백업 및 복원 마법사

ping 사이트주소 : 핑테스트 해당 사이트의 인터넷연결 유무 확인

sfc : 시스템 파일 검사기. 시스템 파일을 검사한후 깨지거난 손실된 파일을 원본 압축파일에서 찾아서 복원시켜줌 . 단, 윈2000에서는 cmd실


행 후 sfc사용 - 마지막 설정된 값을 다음 윈도우부팅시 곧바로 실행됨[수정]

telnet open 사이트주소 : 텔넷접속명령어

tourstart : 윈도우 기능안내 html 문서표시

winipcfg : 인터넷에 접속된 자신의 아이피 주소를 보여줌) 단, 윈2000은 ipconfig로 변경됨

winver : 윈도우 버전확인

wmplayer : 윈도우 미디어 플레이어

wupdmgr : 윈도우업데이트

--------------------------------------------------------------------------------------------------------------------------

msconfig  시작프로그램 제어등 많은기능 제공 (단, 윈2000은 지원 안함)

regedit   레지스트리 편집기

sysedit   autoexec.bat , config.sys ,win.ini, system.ini 시스템구성편집기

command   도스명령프롬프트 실행 (단,윈2000은 cmd로 변경됨)

telnet open 사이트주소 텔넷접속명령어

netstat -na  현재 열린포트와 TCP/IP 프로토콜정보를 보여줌

   (열린포트로 트라이목마형 바이러스 침투 유무확인가능)

sfc   시스템 파일 검사기

   (단,시스템 파일을 검사한후 깨지거난 손실된 파일을 원본 압축파일에서 찾아서 복원시켜줌)

winipcfg  인터넷에 접속된 자신의 아이피 주소를 보여줌

   (단, 윈2000은 ipconfig로 변경됨)

dxdiag   다이렉트X진단도구 및 그래픽과 사운드의 세부정보를 보여줌

systray   사운드 볼륨설정 노란색 스피커 아이콘을 트라이목록에 띄움

ping 사이트주소  핑테스트 해당 사이트의 인터넷연결 유무 확인

--------------------------------------------------------------------------------

drwatson(9x), drwtsn32(2K,XP), wercon(VISTA)

   에러가 발생하여 컴을 강제 종료 시켜야할 상황등을 겪으셨다면 꼭 알고 있어야할 명령어

   실행하면 에러 다이얼로그 박스를 잡아 줍니다.

msconfig    시작프로그램및 서비스를 중지 시킨다거나 하는등의

   시스템 리소스 확보를 위한 윈도우의 기초적인 환경설정을 할수 있죠.

netstat -na   현재 내컴에 접속되어 있는 IP를 출력 합니다.  부속적인 다양한 옵션이 있습니다.

conf    윈도에서 기본제공하는 원격관리 툴인 netmeeting를 실행시켜줍니다.

ping   상대방 IP로 접속이 가능한지 때려보는 명령

   ping yahoo.co.kr  등..... 회선속도및 대상 컴퓨터의 OS판단이 가능함.

xcopy    copy명령어보다 상당한 기능을 제공하는 복사명령어. 하드의 OS까지 복사 가능함...

   XCOPY C: D: /S/C/H/E/R/K  범용적인 옵션. 예전의 98및 도스시절에 많이 쓰던 명령어 이죠..

ipconfig   명령프롬프터에서 실행시키면 내컴의 IP를 알수 있음

   [config/renew] 동적 IP를 새로이 잡아줌. 

   [config/release] 동적 IP를 삭제함

cmd   명령 프롬프트(윈도우 도스)를 실행시키는 명령

sfc /Scannow  오류난 파일을 검색하여 원본으로 재 배치 할때 씁니다.

   파일을 가져올때 윈도우 정품CD가 필요합니다.

regedit   레지스트리 편집기를 실행 합니다.

oobe/msoobe /a   원도우 정품 확인 명령어

scandisk c:  도스상의 명령어로 윈도우위 디스크 검사와 동일 합니다.

ren *.txt *.bak    파일명 바꾸는 도스 명령어

   ren a.txt b.txt  - a.txt 파일을 b.txt 파일로 이름을 바꿈

tracert 대상 사이트 주소 예:tracert yahoo.co.kr

   야후까지  경유해가는 IP를 출력해 줍니다. (IP 를 추적할수도 있죠)

shutdown -a   악성 바이러스및 자동종료 웜등으로 부터 자동종료를 막을때..

dxdiag    컴의 다이렉트 x 버젼확인

deltree   도스에서. 하위 디렉토리까지 포함하여. 삭제 가능한 명령어.. 

   del이나 erase 보다 막강한 기능제공 (deltree XXX)

mstsc.exe  원격 데스크톱 연결 사용

rcimlby.exe -LaunchRA msn 메신저로 상대에게 원격지원요구

--------------------------------------------------------------------------------

▶ 관리 관련 명령어

certmgr.msc  인증서 관리

ciadv.msc   인덱싱 서비스

compmgmt.msc  컴퓨터 관리 

    

devmgmt.msc  장치관리자 

    

diskmgmt.msc  디스크 관리 

    

dfrg.msc   디스크 조각모음 

    

eventvwr.msc  이벤트 뷰어 

     

fsmgmt.msc  공유폴더 

    

gpedit.msc  로컬 컴퓨터 정책 

    

lusrmgr.msc  로컬 사용자 및 그룹

ntmsmgr.msc  Removable Storage

ntmsoprq.msc  이동식 저장소 운영자 요청

perfmon.msc  성능모니터뷰 

    

rsop.msc   정책의 결과와 집합 

    

secpol.msc  로컬 보안설정 

    

services.msc  서비스

wmimgmt.msc  WMI 서비스 구성

comexp.msc  comexp 구성 요소 서비스

control userpasswords2 사용자 계정

mmc   콘솔루터

taskmgr   윈도우 작업 관리자

fltmc   필터 드라이버 로딩 언로딩 및 목록 보기 mini filter 라서 XP SP2 이후 부터.

fsutil   파일 시스템 관련 정보 및 쿼리 가능. 파일 공간 잡기

net   service나 드라이버 로딩 및 시작(start), 정지(stop)

tasklist   프로세스 리스트 확인

attrib   파일속성 변경


--------------------------------------------------------------------------------


▶시작메뉴명령어들

Accessibility Wizard [Accwiz.exe]   내게 필요한 옵션 마법사

Narrator [Narrator.exe ]    내레이터

Address book [Wab.exe]    주소록 - 주ID

Notepad [Notepad.exe ]    메모장

Backup [Ntbackup.exe]    백업및 복원 마법사

On-Screen Keyboard [Osk.exe ]   화상키보드

Calculator [Calc.exe]    계산기

Outlook Express [Msimn.exe ]   아웃룩 익스프레스

Character map [Charmap.exe]    문자표

Paint [Mspaint.exe ]     그림판

Command prompt [Cmd.exe]    명령프롬프트

Pinball [Pinball.exe ]    핀볼

Data sources (ODBC) [Odbcad32.exe]   ODBC 데이터 원본 관리자

Remote Assistance [Rcimlby.exe ]   MSN

Disk cleanup [Cleanmgr.exe]    디스크 정리

Remote Desktop Connection [Mstsc.exe ]  원격 데스크톱 연결

FreeCell [Freecell.exe]    프리셀

Solitaire [Sol.exe ]     카드놀이

Files and Settings Transfer Wizard [Migwiz.exe]  파일 및 설정 전송 마법사

Sound Recorder [Sndrec32.exe ]   녹음기

Hearts [Mshearts.exe]    하트 네트워크

Spider Solitaire [Spider.exe ]    스파이더

HyperTerminal [Hypertrm.exe]   하이퍼터미널

System Information [Msinfo32.exe]   시스템 정보

Internet Backgammon [Bckgzm.exe]   주사위 놀이

System Restore [Rstrui.exe]    시스템 복원

Internet Checkers [Chkrzm.exe]   체커 온라인

Tour Windows XP [Tourstart.exe ]   XP의 새로운 기능을 경험해 보세요.

Internet Explorer [Iexplore.exe]   익스플로러

Utility Manager [Utilman.exe ]    유틸리티 관리자

Internet Hearts [Hrtzzm.exe]    하트 온라인

Windows Media Player [Wmplayer.exe ]   윈도우 미디어 플레이어

Internet Reversi [Rvsezm.exe]    리버시 온라인

Windows Messenger [Msmsgs.exe ]   MSN창모드

Internet Spades [Shvlzm.exe]    스페이드 온라인

Windows Movie Maker [Moviemk.exe ]   무비메이커

Magnifier [Magnify.exe]    윈도우 돋보기

Windows Update [Wupdmgr.exe ]   윈도우 업데이트

Minesweeper [Winmine.exe]    지뢰찾기

WordPad [Wordpad.exe ]    워드패드

MSN Explorer [Msn6.exe]    MSN 익스플로러

[dfrg.msc]     디스크 조각모음

[winver]      윈도우 정보

[explorer]     윈도우 탐색기

--------------------------------------------------------------------------------

▶ 제어판의 모듈실행 명령어

[Access.cpl]     내게필요한옵션

[Mmsys.cpl]     사운드 및 오디오 장치 등록정보

[Appwiz.cpl]     프로그램추가제거

[Nusrmgr.cpl]     사용자계정

[Desk.cpl]     디스플레이등록정보

[Nwc.cpl]      Client Service for NetWare

[Hdwwiz.cpl]     하드웨어추가마법사

[Odbccp32.cpl]     ODBC 데이터 원본 관리자

[Inetcpl.cpl]     인터넷등록정보

[Powercfg.cpl]     전원옵션등록정보

[Intl.cpl]      국가및언어옵션

[Sysdm.cpl]     시스템등록정보

[Joy.cpl]      게임컨트롤러 

[Telephon.cpl]     전화및모뎀옵션

[wscui.cpl]     보안센터

[control admintools ]    관리도구

[Ncpa.cpl]     네트워크 연결

[Main.cpl]     마우스 등록정보

[control keyboard]     키보드 등록정보

[control Folders]     폴더옵션

[mrt]      악성소프트웨어 제거도구


출처 : http://id0min.tistory.com/tag/%EB%AA%85%EB%A0%B9%EC%96%B4

Posted by 타블로 

[출처] windows 기본명령들 (ICAN) |작성자 표범


by Tomoya 2014.05.08 16:19

빌 게이츠(MS), 마크 저커버그(페북), 잭 도시(트위터), 리드 호프만(링크드 인) 에게 공짜로 코딩 배우기


http://code.org


http://code.org/learn

by Tomoya 2013.12.11 15:51
by Tomoya 2013.10.14 16:02

간단한 SQL 툴입니다.

 

하지만 어느정도 SQL을 사용할 수 있는 개발자가 되어야 쓸테니 SQL_ADVANCE로 프로그램명을 적었습니다.
용도는 개발자가 test/ibatis/c#용 쿼리를 만들때 시간을 단축하거나 insert 문 형태로 쿼리문 백업,
DB tool 이 없는 환경에서 간단한 작업용 입니다.

 

 아래의 스크린샷과 간단한 기능 설명을 참고 하여 사용 하시면 됩니다.
당연히 프리웨어 이며,다른 곳에 포스팅 하실때에는 출처 표시만 하면 됩니다.

 

It is a simple SQL tool.


However, I gave the name of the program to SQL_ADVANCE developers that use
SQL to some extent because write necessary.
reduce the time when the developers to
create a query of test / ibatis / c #, in an environment not query statement, backup,
and DB tool in the form of insert statements, applications, is a simple task.


It is referred to a simple function describes the screen shot below, please use.
Is a freeware of course.

 

 

SQL_ADVANCE.exe

 

 

Open connect String : load saved database server connect string (데이터 베이스 서버 연결 문자열을 불러옵니다.)
Open select SQL : load saved select query string  (이전에 저장한 select 쿼리를 불러옵니다.)
Open result SQL : load result query string (이전에 저장한 결과 표시부분의 쿼리를 불러옵니다.)
Save connect String : save database server connect string ( 데이터 베이스 연결 문자열을 저장합니다.)
Save connect String : save select query string
Save connect String : save result query string
Hide checkbox : Server connect string hide/show
select button : select query excute
connect Type : Connection type select (OLE/MSSQL)
Don't show grid checkbox : not drowing grid table. save drowing time.
ConvertSQLType : select query result to selected query type (insert/update/delete)
Convert Line : converted range
first - fist line only
select - first line selected (requirement grid table)
multi selected - multi selected (requirement grid table)
allrows - select query result all rows.
Last - last line only
convert button - select query result convert
excute button - result area querys excute

 

 

 

by Tomoya 2013.08.05 14:54

http://snoopybox.co.kr/1515

제일 나은듯,.
by Tomoya 2012.01.25 14:32

C# 로 AES 알고리즘 함수 암.복호화 작성후
CLR 로 덮어 씌워 DB에서 실행.

데이터베이스 권한 수준 안전에서도 잘 돌아간다.

AES 알고리즘 부분은 구글에서 검색시 여러가지 방법으로 구현한 것들이 많고(ex: http://bullpeng.tistory.com/61)
.net framework 3.5 이상버전(VS2008이상)에서 System.Security.Cryptography 에 라이브러리가 잘 정의되어 있다.

CLR 사용해서 키를 정해두고 중요개인정보는 암호화해서 저장해두면 웹서버/디비서버 다 털지 않는한 DB만 가져가선 볼 수 없다.
by Tomoya 2011.12.08 17:00

참 오랜만에 글 쓰는듯..
7월엔 놀고 8월엔 공부하고,9월엔 공부하면서 "슬슬 결과물을 하나는 내보자." 생각하면서 추석뒤에 1차로 뽑아낸 결과물입니다.

아직 초기 테스트 버전이기에 정말 심플합니다.

기능중 일부만 소개 할 것 이기에 2가지만 넣었습니다.

*이 프로그램을 테스트하기 위해선 MS SQL SERVER 2005 EXPRESS 버전 이상이 필요합니다.
필자의 개발환경및 테스트 환경은 SQL SERVER 2008 R2 EXPRESS 32bit(winxp)/64bit(win7) 이었습니다.

먼저 이 부분은 CLR 설정 부분입니다.
*CLR을 활성화 하신분이면 넘어가셔도 됩니다.
*따로 적거나 하지 않으셔도 아래 첨부된 sql 파일에 주석까지 다 달려 있으니 그대로 해보시면 됩니다.

--CLR을 활성화 하는 설정입니다.
SP_CONFIGURE 'CLR ENABLED',1
RECONFIGURE WITH OVERRIDE
GO

--CLR을 활성화 합니다.
SP_CONFIGURE
GO

 아랫 부분은 프로그램 등록 및 테스트 입니다.
*편의상 C드라이브 루트 밑에 위치시켰고 편한쪽에 위치 시키시면 됩니다.

 --현재 DB에 어셈블리로 등록합니다.
CREATE ASSEMBLY ASM_GetDBSystemInfo FROM 'C:\GetDBSystemInfo.dll'
WITH PERMISSION_SET = UNSAFE
go

--등록된 어셈블리중 시스템정보표시 프로시저(현재하드디스크용량만 표시)를 등록합니다
CREATE PROC usp_clr_GetSysInfo
AS EXTERNAL NAME ASM_GetDBSystemInfo.StoredProcedures.usp_clr_GetSysInfo
GO

--등록된 시스템정보 표시 프로시저를 호출합니다.(테스트)
EXEC usp_clr_GetSysInfo
GO

--DB 시스템에 커맨드 명령을 날리고 결과를 반환하는 테이블 반환 함수를 지정합니다.
CREATE FUNCTION usp_command(@input NVARCHAR(512))
RETURNS TABLE
(cammand_Result NVARCHAR(512))
AS
EXTERNAL NAME ASM_GetDBSystemInfo.StoredProcedures.usp_command
GO

--DB 시스템에 커맨드 명령을 날려 IP정보를 확인 합니다.
SELECT * FROM usp_command('ipconfig /all');

간단하죠?
이제 usp_command('커맨드') 를 이용해서 간단히 DB시스템을 확인하고 제어 할수 있게 되었습니다.
작성 하실때 CREATE FUNCTION usp_command 부분에서 이름을 다르게 정하시면 그 이름으로도 사용 가능합니다.
또한 매니지먼트 스튜디오에서 DB->프로그래밍기능->어셈블리/함수 쪽에서 유저권한같은 세밀한 설정도 가능합니다.


* 이 프로그램은 프리웨어이며 상업적 이용도 가능합니다. 단 컨텐츠 무단 변경/재배포는 불가능 합니다.
또한 이 프로그램을 사용함으로서 발생 할 수 있는 문제에 대해서 책임지지 않습니다.

10.5일 추가사항.
현재 dll파일이 인증서 없이 제작 되어 있어 SYSADMIN 관리자 권한하에 TRUSTWORTHY ON 설정이
어셈블리 등록전에 필요합니다.
ALTER DATABASE ASNS SET TRUSTWORTHY ON;
를 사용하면 사용가능합니다.(인증서는 향후 추가 해보겠습니다)

by Tomoya 2011.09.23 13:45
고객사 A쪽에 업데이트 시
하위고객사 몇십군데에서 업데이트 되도록 되어있다.
문제는 하위고객사에서 톰캣 설정을 어떻게 했는지 확신 하지 못한다는 점,..
함부로 바궜다간 되는데서 안된다고 연락 올수 도 있다.

그래서 검색 해보니 http://ihoney.pe.kr/432 이런 글이 있었다.
생각해보니 디버깅용으로 보여주는 부분을 컴퓨터가 이해하게만 하면 되는게 아닌가?

약간의 오버헤드는 있지만 검색어를 인코딩 검사하는 정도야 40명이하의 유저의 상황에선
무시 할수 있는 부하라고 생각 되어 약간 고쳐 넣었다. 

String tmpSearchText = (String)request.getParameter("SearchText")    != null ? request.getParameter("SearchText").trim()        : "";
 
 String SearchText = "";
 boolean notfind = true;
 if ( tmpSearchText != null && !tmpSearchText.equals("")) {
     String charset[] = {"euc-kr", "ksc5601", "iso-8859-1", "8859_1", "ascii","utf-8"};
   
     for(int k=0; k<charset.length ; k++){
            for(int l=0 ; l<charset.length ; l++){
                if(k==l){//변환전 인코딩과 변환후 인코딩이 동일할 때
                    continue;
                }
                else if(!notfind)//인코딩을 찾았을때
                {
                 break;
                }
                else//대상 인코딩과 현재인코딩이 다를 경우 테스트
                {
                    if(new String(request.getParameter("enc_test_text").trim().getBytes(charset[k]),charset[l]).equals("테스트A1"))
                    {
                     //System.out.println(charset[k]+" : "+charset[l]+" : "+ //인코딩 확인용 디버깅 코드
                       //new String(tmpSearchText.getBytes(charset[k]),charset[l]) + " " +
                       //new String(request.getParameter("enc_test_text").trim().getBytes(charset[k]),charset[l]));
                   SearchText = new String(tmpSearchText.getBytes(charset[k]),charset[l]);//지정된 인코딩으로 설정
                   notfind = false;//인코딩 Find로 설정
                   break;
                    }
                }
            }
        }
    }
 
 if(notfind) SearchText = tmpSearchText;//인코딩을 찾을수 없었을 땐 기본 인코딩으로 설정//변환전 인코딩과 변환후 인코딩이 동일할 때
by Tomoya 2011.06.13 14:49

TB_A 의 데이터는 약 500만건
조건 테스트시 사용한 대상 건수는 10만건~60만건 이었습니다.
테스트 DB 용량은 5GB입니다.
대상 DB는 SQL2005 STD SP4 입니다.

결과는 보시다시피 RANK사용시는 미세한 차이를 보이고
ROW_NUMBER 사용시는 10배 가얀 차이를 보입니다.
가장 최근 결과가 필요하기에 ID DESC를 넣어야 했기에
ID ASC 시 ROW_NUMBER가 효율이 좋지만
RANK로 처리했습니다.
또한 현재는 rank_num을 매김에도 불구하고 bottom 값을 추가로 가져올 방법이 적당히 안보여
카운트를 추가로 처리하고 있습니다.(실제 카운트를 넣어도 0.1초 정도만 추가되는걸 확인 했습니다만..)
상황에 따라 행 번호가 필요한 부분 에서는 rank_num 매기는 서브쿼리 부분을 테이블 x로 처리해서
rank_num을 넘겨 처리하고 있습니다.

기본 쿼리 형태

select 데이터
FROM TB_A  a, tb_B b
where a.id in (
 select a.id from
  (select a.ID,ROW_NUMBER() OVER (ORDER BY a.ID) as rowsnum
   FROM TB_A a
   where 검색조건 ) a
 where a.rowsnum between 10 and 20)
 and 테이블조인조건

위의 상태에서 정렬 방법 변경 테스트

1번 ROW_NUMBER() OVER (ORDER BY a.ID)

(11개 행이 영향을 받음)
테이블 'TB_B'. 검색 수 0, 논리적 읽기 수 22, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'TB_A'. 검색 수 1, 논리적 읽기 수 14829, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.

(12개 행이 영향을 받음)

SQL Server 실행 시간:
   CPU 시간 = 422ms, 경과 시간 = 435ms.

2번 ROW_NUMBER() OVER (ORDER BY a.ID DESC)

(11개 행이 영향을 받음)
테이블 'TB_B'. 검색 수 0, 논리적 읽기 수 22, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'TB_A'. 검색 수 1, 논리적 읽기 수 143214, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.

(12개 행이 영향을 받음)

SQL Server 실행 시간:
   CPU 시간 = 5219ms, 경과 시간 = 5209ms.

3번 RANK() OVER (ORDER BY a.ID)

(11개 행이 영향을 받음)
테이블 'TB_B'. 검색 수 1, 논리적 읽기 수 2, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'TB_A'. 검색 수 5, 논리적 읽기 수 3091, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'Worktable'. 검색 수 0, 논리적 읽기 수 0, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'Worktable'. 검색 수 0, 논리적 읽기 수 0, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.

(16개 행이 영향을 받음)

SQL Server 실행 시간:
   CPU 시간 = 1281ms, 경과 시간 = 819ms.

4번 RANK() OVER (ORDER BY a.ID DESC)

(11개 행이 영향을 받음)
테이블 'TB_B'. 검색 수 1, 논리적 읽기 수 2, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'TB_A'. 검색 수 5, 논리적 읽기 수 3091, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'Worktable'. 검색 수 0, 논리적 읽기 수 0, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.
테이블 'Worktable'. 검색 수 0, 논리적 읽기 수 0, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0, LOB 미리 읽기 수 0.

(16개 행이 영향을 받음)

SQL Server 실행 시간:
   CPU 시간 = 1343ms, 경과 시간 = 848ms.

현재 사용 쿼리

SELECT 데이터,전체카운트  
FROM tb_A a (NOLOCK) LEFT OUTER JOIN tb_E e (NOLOCK) on (a.E_id = e.E_id ) 
,tb_C c (NOLOCK)  ,tb_B b (NOLOCK),tb_D d (NOLOCK) ,
( SELECT count(*) as cnt   FROM TB_A
WHERE 조건) y 
WHERE a.id in (
 SELECT x.id
 FROM  (
  SELECT ID,RANK() OVER (ORDER BY ID DESC) as rank_num 
  FROM TB_A
  WHERE 조건
 ) x 
 WHERE x.rank_num BETWEEN (20*0)+1 AND (20*1) -- 페이징 부분

AND 조인조건
ORDER BY a.id DESC

트위터 @ 성대중(SQL SERVER MVP) 님의 조언을 받아 TOP TOP 방식으로 변경해 보았다.

변경 쿼리

SELECT 데이터

FROM 대상테이블s , 대상카운트 ,

(SELECT TOP 표시수 x.id

         FROM  (

                  SELECT TOP 표시수*(페이지번호+1) ID 

                  FROM 대상테이블

                  WHERE 조건

                  ORDER BY ID DESC

         ) x  ORDER BY ID) z

WHERE a.id = z.id

AND 조인조건

ORDER BY a.id DESC

비용 비교
RANK
CPU 시간 = 63ms, 경과 시간 = 76ms.
CPU 시간 = 63ms, 경과 시간 = 76ms.
CPU 시간 = 62ms, 경과 시간 = 76ms.

CPU 시간 = 672ms, 경과 시간 = 500ms.
CPU 시간 = 703ms, 경과 시간 = 457ms.
CPU 시간 = 751ms, 경과 시간 = 477ms.

TOP TOP
CPU 시간 = 15ms, 경과 시간 = 19ms.
CPU 시간 = 15ms, 경과 시간 = 18ms
CPU 시간 = 16ms, 경과 시간 = 17ms.


CPU 시간 = 297ms, 경과 시간 = 475ms.
CPU 시간 = 375ms, 경과 시간 = 468ms.
CPU 시간 = 343ms, 경과 시간 = 486ms.

 ..서브트리 코스트에선 36대 0.8로 1/50로 줄어 든것을 확인 했는데..10만건 테스트 시 시피유,I/O 타임이 생각보다 줄지 않았다.
왜 일까..한번 고민해봐야 할듯..그리고 대상건을 30만건으로 늘려 비교시엔 타임이 오히려 RANK가 더 좋게
나오는 현상도 원인을 찾아 봐야 할듯..

by Tomoya 2011.06.08 09:44
회사에서 제작하다 좀 안 맞는 부분이 있어 버려진 프로그램..
항상 켜져 있어야 되는 프로그램이 있을 경우 사용 하면 된다.
항상 죽이고 싶은 프로세스가 있다면 die로 두고 꺼도 좋지만..그런 경우 있으려나..;
작업 추가로 등록하고 해당 작업 명 더블클릭시 수정/삭제 가능

작업추가로 등록하고 윈도우 시작시 감시 프로그램을 자동으로 시작하게 하고 싶으면 서비스 등록해두고
서비스 삭제하면 윈도우즈 시작시 자동 실행하지 않는다.

종료시 트레이에서 우클릭 종료해야 꺼짐.(전체화면에서 종료 버튼 누를시 트레이 최소화)

DB체크 기능이나 이상시 이메일 발송기능은 제외 되었음.
이이콘은 5분도 안들여 직접 만들었기에..보기 싫음..
(따로 만들어서 원하시는 분 있으면 넣어 드릴수도..)

프리웨어로 누구나 사용가능합니다.



by Tomoya 2011.06.07 09:06
| 1 2 3 4 |