본문 바로가기
728x90

전체 글109

인덱스 인덱스특정 데이터를 검색하는 쿼리를 실행하면 첫 행부터 마지막 행까지 모든 데이터를 확인하게 된다.대용량 데이터에서는 효율적인 검색을 위해 인덱스를 사용하기도 한다.검색 쿼리를 날릴 때 워크벤치에서 결과창 우측의 탭 중 Execution Plan 탭을 확인하면 해당 쿼리가 인덱스를 사용해서 검색되었는지 확인할 수 있다.장단점검색 성능 향상으로 시스템 전체의 성능을 향상시키는 장점을 가진다.하지만 인덱스를 생성하려면 DB에 추가적인 공간이 필요한데, DB의 약 10% 공간을 차지하게 된다.그러므로 소용량 데이터를 가지는 DB에서는 적합하지 않다.대용량 데이터를 가지는 DB에 검색이 자주 일어나는 컬럼에 대해서 인덱스를 만드는 것이 좋다.인덱스 특징과 생성 고려사항인덱스는 대용량 데이터 테이블에 적합컬럼 단.. 2024. 8. 25.
전체 데이터 삭제 DELETE vs TRUNCATE DELETE vs TRUNCATEDELETE에 조건을 주지 않는 것과 TRUNCATE는 같은 기능을 한다.둘 다 테이블 구조를 남기지만 내부 데이터를 모두 삭제하게 된다.그럼에도 TRUNCATE의 성능이 DELETE보다 좋은 이유는 무엇인지 차이점을 비교해보자.작동 방식의 차이DELETE약 O(N)의 작업 시간 DELETE는 데이터를 한 행씩 삭제한다. 행을 삭제하기 전에 로그를 남기고 해당 행에 대한 트랜잭션 로그를 작성한다.이로 인한 장점은 롤백이 가능하다는 것이다.그러나 로깅 및 트랜잭션 관리를 위한 추가적인 오버헤드가 발생하게 된다.또한 AUTO_INCREMENT 값에 대해 삭제된 행들을 리셋하지 않는다.(이전 값부터 증가)TRUNCATE약 O(1)의 작업 시간 TRUNCATE는 로깅 및 트랜잭션.. 2024. 8. 25.
문자열 인덱스, like문 주의사항 like 사용 시 주의사항을 설명하기 앞서 문자열 인덱스에 대해서 알아보자.문자열 인덱스인덱스는 다양한 데이터 유형에 대해서 만들 수 있지만, 문자열 컬럼에 인덱스를 만드는 경우에 대해서 설명하겠다. 문자열 인덱스는 문자열 비교를 할 때 왼쪽에서 오른쪽으로 문자를 비교하는 방식으로 구현된다. 그렇기 때문에 특정 접두사로 시작하는 문자열을 검색할 때는 효율적인 검색이 가능하다. 문자열 인덱스는 DBMS의 종류에 따라서, 혹은 하나의 DBMS에서도 스토리지 엔진의 종류에 따라서 구현 방식이 달라질 수 있다. 주로 사용되는 구현 방식은 B-Tree, 해시이다. B-Tree해시최선O(1) 루트인 경우O(1)평균O(log N)O(1)최악O(log N)O(1) 결국 인덱스는 O(log N) ~ O(1) 시간 내에 .. 2024. 8. 25.
SQL 정리 프로그래머스 고득점 키트 돌리면서 익혔던 문법들 정리is null과 is not null다른 비교의 경우 =를 사용하여 비교하지만,null과 비교할 때는 is를 사용해 비교한다.alias칼럼명 as c1으로 alias를 줄 수 있다. as는 생략이 가능하다. 또한 select에서 alias를 사용하면 출력에서 alias로 칼럼명이 나온다.DateDate 타입의 경우 여러 가지 관련 함수가 존재한다.format을 지정해주지 않으면 기본적으로 다음과 같은 형식으로 출력된다.2024-03-19 01:29:56 (yyyy-MM-dd hh:mm:ss)Date 함수함수명역할year()년도만 반환함month()월만 반환함day()일만 반환함month와 day에서 첫글자 0이면 떼고 반환함SQL date_format .. 2024. 8. 25.
DB 개념 6편 - ER 모델 Entity-Relationship Model에 대한 더 자세한 내용을 다뤄보겠다.용어Entity Set개체들의 집합ERD에서 직사각형으로 표현된다.Relationship여러 Entity 간의 관계ERD에서 마름모로 표현된다.Attribute어떤 개체의 속성ERD에서 타원으로 표현된다. primary key로 사용되는 attribute의 경우 직선 밑줄이 그어진다.Relationship SetEntity 간의 어떤 관계가 2개 이상 나타나는 경우, 관계에 속한 N-tuple들의 setN-tuple릴레이션의 attribute를 n개 가지고 있는 행Descriptive Attributes of Relationship관계에 대한 부가적 속성ex) 대출 날짜 Relationship 종류Binary Relatio.. 2024. 8. 25.
DB 개념 5편 - View와 MView의 차이 📌View데이터베이스에서의 뷰쿼리문에 의해 테이블을 기반으로 만들어진 가상의 테이블이다. Base Table 일부를 가져온다.View != Table테이블은 데이터베이스에 실제로 저장된다. 하지만 뷰는 데이터베이스에는 저장되지 않고 일시적으로 보여주는 역할만 한다. 뷰는 쿼리문을 실행할 때마다 생성된다.가상의 테이블이기 때문에 삽입, 삭제는 불가능하다.📌Materialized View구체화 뷰 MView뷰의 일종이나, 데이터베이스에 실제로 저장된다.쿼리 수행 속도의 향상 을 위해서 Aggregation 등 자주 사용하는 함수의 수행 결과를 미리 MView로 생성해둔다.Base Table의 Update가 발생하는 경우, Triggering으로 MView도 업데이트된다. 2024. 8. 25.
DB 개념 4편 - SQL과 DB 사용자의 분류 📌SQLStructured Query LanguageDBMS가 알아들을 수 있는 언어SQL은 크게 세가지로 구분된다.DDL (Data Definition Language)데이터 정의어저장공간의 구조화를 위해 사용CREAT, DROP, ALTER DML (Data Manipulation Language)데이터 조작어데이터 조작을 위해 사용SELECT, INSERT, DELETE, UPDATE DCL (Data Control Language)데이터 제어어데이터 보안, 무결성, 데이터 회복, 병행 수행 제어를 위해 사용COMMIT, ROLLBACK, GRANT, REVOKE 📌DB 사용자 분류End User 최종 사용자DML 을 통해 DB에 접근응용 프로그래머응용 프로그램(Host 언어 + DML) 을 통.. 2024. 8. 22.
DB 개념 3편 - RDB 무결성과 키 📌관계형 모델의 Integrity Rule데이터 무결성이란 데이터의 정확성(accuracy)과 일관성(consistency)이 보장된 상태를 일컫는다.Entity Integrity 개체 무결성Entity는 이 세상에 구분할 수 있는 모든 것이다.일례로 tuple도 개체로서 구분이 가능해야하며, 각각의 key 값으로 개체를 구분한다.개체무결성은 primary key로 참여하는 모든 attributes의 attribute 값은 null이 되어서는 안된다는 조건이다.Referential Integrity 참조 무결성관계형 DB에서 한 테이블의 foreign key 값은 다른 테이블의 primary key 값을 참조할 수있다.※ 주의 : foreign key는 null 값을 가질 수 있다. 하지만 primar.. 2024. 8. 22.
728x90