1. 인덱스 장단점장점단점1. 빠른 데이터 검색 - 찾는 데이터 중 가지고 있는 데이터는 직접 준다 - 찾는 데이터 중 없으면 어디있는지 알려준다2. 데이터 중복 방지 - Primary key 제약, Unique 제약3. 잠금 최소화 - 최소 범위의 잠금 가능 - 동시성을 높여줌1. 물리적 공간 차지 - 테이블처럼 물리적인 공간 차지2. 인덱스 유지관리 부담 - select문에는 용이 - DML문은 인덱스를 좋아하지 않음3. 데이터가 극히 적다면 인덱스를 사용하지 않을 수 있음 (얻는 효과보다 유지관리 부담이 클 수 있음) 2. 인덱스가 사용되지 않는 조건 1) 인덱스 변형 - 예 : substr(name, 1, 3) = 'abc'; 2) not 연산자 (not, ..
CREATE PROCEDURE SP08_120_로또번호생성 AS BEGIN SET NOCOUNT ON; DECLARE @난수시작값INT = 1-- 난수생성범위 시작 DECLARE @난수종료값INT = 45-- 난수생성범위 종료 DECLARE @로또번호INT-- 난수발생값 CREATE TABLE #결과 ( 순번INT IDENTITY(1, 1), 로또번호INT ) DECLARE @순번 INT = 1 WHILE (@순번 IF EXISTS 조건문 사용 - ROUND(대상값, 자릿수, 기능값) -> 기능이 0이면 반올림, 0이 아니면 절사 - RAND() : 난수를 반환 (0초과 1미만의 소수점을 가진 숫자 반환) ※ 숫자 범위 내 난수 생성 방법(시작값 1, 종료값 10) 0.01 난수발생 -> ((10 + 1..
재귀호출 해당 함수 또는 테이블의 값을 다시 호출하면서 반복적으로 처리할 때 사용 시스템에서 반복할 수 있는 최대 횟수를 지정하는 것이 좋음 (생략하면 DB 기본값으로 설정되어 시스템 설정에 따라 오류가 발생될 수 있음) WHILE문으로 수행하는 방법보다 훨씬 빠른 속도를 기대할 수 있음 SET NOCOUNT ON; WITH Q AS (SELECT 순번 = 1, 합계 = 1 UNION ALL SELECT 순번 = 순번 + 2, 합계 = 합계 + (순번 + 2) FROM Q WHERE 순번 < 100 - 1 ) SELECT * FROM Q OPTION (MAXRECURSION 100) OPTION을 통해 재귀호출 최대 실행 횟수를 제한할 수 있음 (잘못 작성하면 무한반복할 수 있음) - MAXRECURSI..
SET NOCOUNT ON - INSERT, SELECT, UPDATE 등의 SQL문을 저장프로시저 등에서 실행하면 처리 건수를 클라이언트로 표시하거나 전달되어 예기치 않은 오류가 발생. SET NOCOUNT ON 옵션을 설정하면 결과를 만들면서 발생되는 적용 건수 등의 불필요한 데이터가 리턴되지 않는다. SET TRANSACION ISOLATION LEVEL READ UNCOMMITTED - 기본 트랜잭션 격리 수준은 [READ COMMITTED]모드로 다른 사용자가 데이터를 변경시 다른 사용자는 트랜잭션이 완료될 때까지 대기현상이 발생되어 시스템 속도가 매우 느리거나 오류가 발생 이러한 문제점을 해결하기 위해 다른 사용자가 변경 중인 데이터를 포함하여 대기 없이 읽을 수 있도록 설정하는 것 데이터의 ..
정적SQL와 동적SQL 장단점 비교 정적SQL 동적SQL [장점] - 동적SQL방식 보다 빠른 속도 : 정적 SP는 작성된 SQL문장에 대한 오류검사, 명령어에 대한 해석 등의 작업이 이미 수행되어 데이터베이스에 저장되어 있기 때문 [단점] - SP의 프로그래밍 라인수가 불필요하게 길어질 수 있음 [장점] - 확장성와 유연성 [단점] - 변수 사용하여 매번 변수에 저장되어 있는 SQL문장에 대해 오류검사와 명령어에 대한 해석 등의 작업이 수행되어 상대적으로 속도가 느림 [동적쿼리 예시] -- SP06_180_동적SQL ALTER PROCEDURE [dbo].[SP06_180_동적SQL] @IN_처리구분INT-- 1: DD집계 2:MM집계 3:YYYY집계 AS BEGIN -- 입시테이블 생성 CREATE ..
저장프로시저 - 자료를 입력, 수정, 삭제 등의 작업을 수행하는 프로시저 - 해당 작업이 성공하였는지 아니면 오류가 되었는지를 필히 체크되어야 함 - 결과를 전달받는 방법으로는 레코드셋 반환 방식, 출력변수 반환 방식이 있음 레코드셋 반환 방식 - 처리 결과를 SELECT의 실행 결과인 레코드셋으로 전달하는 방식 - 상대적으로 쉽고 간단하지만 향후 확장하기에는 몇 가지 불편한 문제가 있기 때문에 권장하지 않음 출력변수 반환 방식 - 실행 결과를 @변수에 저장하여 전달하는 방식 - 향수 확장되거나 유연한 프로그래밍 작업을 수행하기에는 더 유리 -- ============================================= -- Author:홍길동 -- Create date: 2020-07-29 --..
[조회 기본 SP 개발 산출물 예시] SP이름 SP06_110_제품_조회 -SP006 : 업무그룹 (SP06:SP기본) - 110 : 상세 프로그램번호 - 제품 : 프로그램(화면)이름 - 조회 : 상세기능 (예)조회, 처리, 수정 등 입력 변수 @IN_제품명 NVARCHAR(500) 처리 내용 1. 실습을 위해 임시테이블을 생성하고 제품자료를 INSERT 한다. 2. [@IN_제품명]을 입력받는다. 3. [TB_제품] 테이블의 자료를 조회 한다. 기존 입력된 전체 데이터를 조회 한다. 4. [TB_제품] 테이블의 자료를 조회 한다. 조회조건은 LIKE를 사용한다. 출력 변수 관리 하지 않음 * 관리하지 않더라도 RETURN값 0 발생 레코드셋 레코드셋1 : 제품코드, 제품명 (전체) 레코드셋2 : 제품코..
- Total
- Today
- Yesterday
- MSSQL Server 기본에서 실무까지
- Python
- 모든 웹을 위한 JavaScript jQuery 입문
- 모던 웹을 위한 JavaScript jQuery 입문
- 리눅스
- 프로시저
- 강제 타입 변환
- 리액트를 다루는 기술
- 스타트 스피링 부트
- JavaScript
- 처음 배우는 스프링 부트2
- 모던 웹을 위한 JavaScript + jQuery 입문
- MSSQL
- springboot
- 배워서 바로 쓰는 스프링 부트 2
- 스프링부트퀵스타트
- MSSQL 기본에서 실무까지
- 스프링부트 퀵스타트
- 스프링 부트 퀵스타트
- 스타트 스프링 부트
- MS SQL Server 기본에서 실무까지
- Linux
- 스프링부트 퀵 스타트
- 자바
- Java
- Vue.js
- JAVA 기본기 다지기 프로젝트
- 손에 잡히는 10분 SQL
- 스프링부트 퀵스타터
- 자바스크립트&제이쿼리
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |