목록DB/MySQL (6)
elevne's Study Note

전체텍스트 검색은 긴 문자의 텍스트를 빠르게 검색하기 위한 기능이다. 아래와 같은 쿼리를 통해 데이터를 조회하려는 경우가 생길 것이다. SELECT * FROM testTbl WHERE columnA LIKE '%교통%'; 이렇게하면 '교통'이라는 글자는 들어간 모든 기사가 검색되는데, 문제는 이 상황에서는 인덱스를 사용할 수 없다는 것이다. '%교통%' 은 텍스트의 중간에 들어있으므로 인덱스를 사용할 방법이 없으며, MySQL 은 전체 테이블 검색을 하게된다. (매우 오래걸린다...) 전체 텍스트 검색은 이 문제를 해결해준다. 전체 텍스트 검색은 첫 글자 뿐만 아니라 중간의 단어나 문장으로도 인덱스를 생성해주기 때문에 이러한 상황에서도 인덱스를 사용할 수 있어 순식간에 검색결과를 얻을 수 있다. 전체텍..

인덱스는 튜닝에 즉각적인 효과를 내는 가장 빠른 방법 중 하나로, 인덱스를 생성하고 인덱스를 사용하는 SQL 을 만들어서 사용한다면 기존보다 아주 빠른 응답 속도를 얻을 수 있다. 인덱스를 만들어서 발생되는 장점을 아래와 같다. 검색 속도가 빨라질 수 있다 (항상 그런 것은 아니다) 결과적으로 쿼리의 부하가 줄어들어 시스템 전체의 성능이 향상된다. 하지만 단점도 존재한다. 인덱스가 데이터베이스의 공간을 차지하여 추가적인 공간이 필요해지는데, 대략 데이터베이스 크기의 10% 정도의 추가공간이 필요하다. 처음 인덱스를 생성하는데 시간이 많이 소요될 수 있다. 데이터의 변경작업이 자주 일어나는 경우에는 오히려 성능이 나빠질 수 있다. 인덱스의 종류는 크게 두 가지로 나뉜다. 클러스터형 인덱스와 보조인덱스이다...

Trigger 은 테이블에 무슨 일이 일어나면 자동으로 실행되는 작업이다. 테이블에 삽입, 수정, 삭제 등의 작업(이벤트) 발생 시에 자동으로 작동되는 개체로, Stored Procedure 과 비슷한 모양을 가진다. 트리거로 많이 사용되는 예로는, 데이터 삭제 시에 사용되는 트리거이다. 만약 누군가가 어느 테이블의 행을 고의 또는 실수로 삭제한다면, 삭제된 행의 내용을 복구하는 것도 어려우며 누가 지웠는지 추적하는 것도 어렵다. 이러한 경우 A 테이블에서 행이 삭제되는 순간에 삭제된 행의 내용, 시간, 삭제한 사용자 등을 다른 테이블에 기록해 둠으로써 이를 해결할 수 있다. 트리커는 제약조건들과 더불어 데이터 무결성을 위해 MySQL 에서 활용할 수 있는 또다른 기능이다. 트리거는 스토어드 프로시저와..

Stored Procedure 이란 MySQL 에서 제공되는 프로그래밍 기능이며, 쿼리문의 집합으로 어떠한 동작을 일괄처리하기 위한 용도로 사용된다. 아래는 Stored Procedure 을 생성하는 간단한 형식이다. CREATE PROCEDURE 프로시저이름( IN 또는 OUT 파라미터 ) BEGIN --- SQL 프로그래밍 코드 --- END 위 형식에 맞추어 생성한 프로시저는 CALL 프로시저이름() 으로 호출할 수 있다. 프로시저를 삭제할 때에는 DROP PROCEDURE 을 사용하면 된다. Stored Procedure 은 실행 시에 입력 매개변수를 지정할 수 있다. 입력된 매개변수는 Stored Procedure 내부에서 다양한 용도로 사용될 수 있다. 입력 매개변수를 지정할 때는 아래와 같이..

제약조건 (Constraint) 이란 데이터의 무결성을 지키기 위한 제한된 조건을 의미한다. 특정 데이터를 입력할 때 무조건적으로 입력되는 것이 아니라 어떠한 조건을 만족했을 때에 입력되도록 제약할 수 있는 것이다. MySQL 은 데이터의 무결성을 위해 아래 제약조건들을 제공한다. PRIMARY KEY FOREIGN KEY UNIQUE CHECK DEFAULT NULL Primary Key 제약조건 테이블에 존재하는 많은 행의 데이터를 구분할 수 있는 식별자를 기본 키(primary key)라고 부른다. 기본키에 입력되는 값을 중복될 수 없으며, NULL 이 들어올 수도 없다. 대부분의 테이블은 기본키를 가져야한다. 기본키가 없어도 테이블의 구성이 가능하기는 하지만, 실무적으로는 거대부분의 테이블에는 설..

MySQL 에서 사용하는 데이터 타입의 종류는 약 30 개 가까이 있다. 숫자 데이터 데이터 타입 바이트 수 숫자 범위 설명 BIT(N) N/8 1~64bit 표현. b'0000' 형식 TINYINT 1 -128 ~ 127 정수 SMALLINT 2 -32768 ~ 32767 정수 MEDIUMINT 3 - 8,388,608 ~ ... 정수 INT, INTEGER 4 - 2147483648 ~ ... 정수 BIGINT 8 - 900 경 ~ ... 정수 FLOAT 4 -3.40E+38 ~ ... 소수점 아래 7자리까지 DOUBLE, REAL 8 -1.22E-308 ~ ... 소수점 아래 15자리까지 DECIMAL(m,[d]), NUMERIC(m,[d]) 5 ~ 17 -10^38 + 1 ~ ... 전체 자리수(..