옵티마이저와 힌트
·
Database
쿼리 실행절차 쿼리 실행 절차는 보통 다음과 같다. 1. 사용자로부터 요청된 SQL문장을 잘게 쪼개서 MySQL서버가 이해할 수 있는 수준으로 분리한다.(파스 트리) 2. SQL의 파싱 정보를 확인하면서, 어떤 테이블로부터 읽고 어떤 인덱스를 이용해서 테이블을 읽을지 선택한다. 3. 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져온다. 여기서 두 번째 단계는 '최적화' 단계라고 할 수 있으며, MySQL서버의 옵티마이저에서 실행한다. 이 두번째 단계가 완료되면, 쿼리의 '실행 계획'이 만들어지는 것이다. 옵티마이저 - 옵티마이저는 쿼리를 최적으로 실행하기 위해, 각 테이블의 데이터가 어떤 분포로 저장돼있는지 통계정보를 참조하며, 그러한 기본 데이터를 비교해 최적의 실행계획을 수립한..
인덱스
·
Database
인덱스 - 칼럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 삼아 인덱스로 만들어 둠 - 칼럼의 값을 주어진 순서로 미리 정렬해서 보관함 - 정렬의 과정을 거치기 때문에, 인덱스가 많은 테이블은 insert, update, delete 문장의 처리가 느려짐. 단, select문장은 매우 빠르게 처리할 수 있다 - 인덱스의 종류를 역할 별로 구분하면, PK (Primary Key) 와 보조 키 (Secondary Index)로 구분할 수 있음 -> PK : 그 레코드를 대표하는 칼럼의 값으로 만들어진 인덱스. -> PK를 제외한 나머지 모든 인덱스는 세컨더리 인덱스라고도 분류 - 데이터 저장방식 별로 구분하면, B-Tree인덱스와 Hash 인덱스가 있다. - B-Tree 인덱스 : 칼럼의 값을 변..
Sybase Random함수
·
Database
SELECT top N * FROM ~~ OREDER BY newid() 지정한 수의 랜덤한 레코드를 추출해준다.
[mybatis] <include refid="">
·
Database
mybatis의 include refid 태그는 반복적으로 쓰이는 sql문을 재활용하기 위해 만들어진 mybatis 태그로, 아래와 같이 사용한다. SELECT ~~~ FROM WHERE ~~ SELECT COUNT(*) FROM () product 해당하는 select태그에 이런식으로 사용한다.
DB / 데이터베이스 - 인덱스
·
Database
1) 인덱스란 테이블의 데이터를 빠르게 검색할 수 있는 자료 구조로, 테이블의 검색 속도를 높이기 위해 사용됩니다. 데이터베이스 안의 레코드를 풀 스캔하지 않고, B Tree로 구성된 구조에서 index파일 검색으로 속도를 향상시키는 기술입니다. 2) 인덱스 장/단점 장점 - 1. 테이블 검색과 정렬 속도가 향상됩니다. 2. 인덱스를 기본키로 자동으로 설정해 관리가 용이합니다. 단점 - 1. 인덱스 파일을 별도로 만들어야함으로 파일의 크기가 늘어납니다. 2. 인덱스를 처음 생성하는데 시간이 많이 소요됩니다. 3. 인덱스된 컬럼 값이 변경되거나 인덱스를 업데이트하게되면 성능이 저하됩니다. 3) 인덱스 SQL문 1. 인덱스 생성문 1 - 1. 고유 인덱스 생성문 ( 유일한 값을 갖는 컬럼에 대해) CREAT..
SQL Injection
·
Database
SQL Injection은 웹 사이트의 보안상 허점을 이용해, sql쿼리 문을 이용해서 디비의 정보를 가져오는 해킹기법입니다. 대부분의 클라이언트가 입력한 데이터를 필터링 하지 못할 경우 발생합니다. 인젝션의 대표적인 공격 방법은 다음과 같습니다. * 논리적 에러를 이용한 SQL 인젝션 - select * from member where name='abcde' password='12345' --> select * form client where name='abcde' and password='1342' or '1' = '1' 앞 값과 뒤 값중 하나라도 참이면 참이 되므로 이 구문은 로그인에 성공하게 됩니다. 이를 예방하기 위한 방법들은 다음과 같습니다. 1. 입력값 검증 입력값을 검사하여 SQLI를 예방..
오라클 함수 select문 실행 순서
·
Database
오라클 함수의 select문 실행 순서는 다음과 같다. /* 5 : SELECT 1 : FROM 2 : WHERE 3 : GROUP BY 4 : HAVING 6 : ORDER BY */
오라클 함수
·
Database
- 단일행 함수 : N개의 값을 읽어서 N개의 값을 돌려준다. (매 행마다 함수 실행 결과 반환해준다.) - 그룹 함수 : N개의 값을 읽어서 1개의 결과를 돌려줌 ( 각 '그룹별'로 함수 실행결과 반환해준다.) * 결과행의 갯수가 다르기 때문에 단일행함수와 그룹함수를 함께 사용할 수 없다. * 함수를 기술할 수 있는 위치 : SELECT절, WHERE절, ORDER BY절, GROUP BY절, HAVING절 LENGTH / LENGTHB LENGTH(STRING): 내가 전달한 글자 수를 반환해준다. LENGTHB(STRING) : 해당 문자의 글자수가 아닌 바이트수를 반환해준다. => 결과 값 NUMBER타입으로 반환된다. (숫자 값으로 전달됨) STRING: 문자에 해당하는 컬럼 | '문자값' 가,..
오라클 연산자 우선순위
·
Database
/* 0. () 1. 산술연산자 2. 연결연산자 3. 비교연산자 4. IS NULL LIKE IN 5. BETWEEN AND 6. NOT 7. AND 8. OR */
takoyummy
'Database' 카테고리의 글 목록