DB
-
NOCOUNTDB 2018. 9. 20. 22:40
SET NOCOUNT OFF/ON 쿼리문또는 프로시저의 영향을 받은 행의 수를 나타내는 메세지를 보여주지 않는것 * 사용이유 프로시저의 성능향상 NOCOUNT OFF 기본값이 OFF임. 1234567891011121314151617181920USE [test_cm]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[SP_INSERT_USER] ASBEGIN SET NOCOUNT OFF; INSERT INTO T_USER VALUES('김군', '2002-05-11', 2 , '남자', '2018-11-11') INSERT INTO T_USER VALUES('최군', '2002-05-11', 2, '남자', '2018-11-11') ..
-
CONVERTDB 2018. 9. 17. 22:46
CONVERT : 데이터타입을 다른 데이터타입으로 바꾸는 기능 날짜 -> 문자1SELECT CONVERT(VARCHAR(10), USER_JOINDATE, 120) FROM T_USER WHERE USER_NAME='홍길동'cs세번째 파라미터 형식 120 -> yyyy-mm-dd hh:mi:ss (24h)다른형식은 https://www.w3schools.com/sql/func_sqlserver_convert.asp 문자 -> 날짜1SELECT CONVERT(DATE, '2018-09-17')cs 숫자->문자1SELECT CONVERT(CHAR, 5)cs 문자->숫자1SELECT CONVERT(INT , '333')cs
-
Store Procedure란?DB 2018. 9. 16. 23:03
스토어 프로시저 : DB 내부에서 작업을 수행하는 쿼리의 집합 장점 1. 서버/클라이언트 네트워크 트래픽감소 2. 보안강화(SQL 인젝션 같은 기본적인 보안사고는 피할 수 있음) 3. 패치 필요가 없음(WAS재기동 불필요) 4. 최초 실행시 최적의 상태로 컴파일되고 이후 DB캐시에 저장됨 . 캐시에 저장되면 최적화와 컴파일하지않음 여러번 사용시 성능향상 의 효과가 있다. 단점 1. 리팩토링 매우힘듬 2. 히스토리 관리불가 3. 유지보수 힘듬 4. 디버깅어려움 프로시저 생성1234567891011121314CREATE PROCEDURE SP_TEMP_INSERT( @pi_name varchar(50)='' -- 이름 파라미터 ,@pi_age int -- 나이 파라미터 ) AS BEGIN SET NOCOUN..
-
WITH (NOLOCK)DB 2018. 9. 14. 00:16
WITH (NOLOCK) : 공유잠금을 걸지 않고 바로 조회 *사용이유?MSSQL의 기본 격리 수준(isolation level)은 read committed 임SELECT시 수행시 같은 테이블에서 INSERT, DELETE, UPDATE가 되고 있으면 SELECT는 LOCK이 걸린다. WITH (NOLOCK)을 사용하면 선행작업의 결과와 관계 없이 SELECT문이 실행된다 *예제 쿼리 SELECT * FROM 테이블 WITH (NOLOCK) 프로시저 CREATE PROCEDURE 프로시저명 AS SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET NOCOUNT ON; BEGIN ~~~~ END 그러나 쓰지 말아야 할 경우가 있음 , 정말로! 중요하게 실시간으..
-
[MSSQL] 테이블 정의서 작성 쿼리DB 2018. 9. 14. 00:05
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657SELECT A.COLUMN_NAME as 컬럼명 , A.DATA_TYPE as 데이터타입 , CASE WHEN A.CHARACTER_MAXIMUM_LENGTH IS NULL THEN ISNULL (A.NUMERIC_PRECISION, '') ELSE A.CHARACTER_MAXIMUM_LENGTH END AS [길이] , CASE WHEN A.COLUMN_DEFAULT is null THEN '' ELSE A.COLUMN_DEFAULT END AS [기본값] , CASE WHEN C.TABLE_NAME IS NOT N..
-
강제로 인덱스 태우기, 인덱스 무시하기DB 2018. 8. 25. 00:19
옵티마이저를 100% 신뢰해서는 안됨. 그렇게 똑똑한건 아니다실행계획을 보고 적절하게 태워줘야함 강제로 인덱스 무시하기 주의사항- 테이블에서 인덱스 최소 2개이 이상이야 함 EXPLAINSELECT * FROM BOARD IGNORE INDEX(BOARD_DELETEFLAG) WHERE BOARD_DELETEFLAG='N'; 강제로 인덱스 태우기 EXPLAINSELECT * FROM BOARD USE INDEX(BOARD_DELETEFLAG) WHERE BOARD_DELETEFLAG='N';=> 힌트사용, 옵티마이저에게 힌트를 준다 EXPLAINSELECT * FROM BOARD FORCE INDEX(BOARD_DELETEFLAG) WHERE BOARD_DELETEFLAG='N';=> 강력하게 인덱스를 ..