728x90
728x90

Database 15

MariaDB SQL INDEX - INDEX가 적용되지 않는 이유들

WHERE 절에서 Column 값을 변경하여 비교하면 INDEX가 적용되지 않습니다. WHERE 절에서 지정된 문자열로 시작하는 Column를 찾을 경우 SUBSTR() 대신 LIKE%를 사용합니다. LIKE%는 INDEX가 적용됩니다. %LIKE는 INDEX 적용되지 않아 가급적 제한된 조건에서 사용해야 합니다. -- 단일 INDEX 생성 CREATE INDEX IDX_MBR_ID ON MBR_ACCOUNT_TB (MBR_ID); EXPLAIN SELECT * FROM MBR_ACCOUNT_TB WHERE SUBSTR(MBR_ID, 1, 2) = 'te'; --> type : ALL, key : NULL, rows : 2, extra : Using where --> INDEX로 검색되지 않고 WHERE..

Database 2022.08.15

MariaDB SQL INDEX - EXPLAIN (실행 계획), INDEX 처리 여부

MariaDB EXPLAIN (실행 계획) Explain은 MariaDB에서 Query(쿼리)에 대한 예상되는 실행 결과를 보여줍니다. Explain를 결과를 통해 INDEX가 사용되어 처리되었는지 확인할 수 있습니다. DBeaver에서 EXPLAIN (실행 계획) 실행 결과 id : 실행 아이디 select_type : SELECT 타입 SIMPLE : UNION이나 SUBQUERY가 없으면 PRIMARY : UNION이나 SUBQUERY가 있고 중심이 되는 Table이면 SUBQUERY : SELECT에 SUBQUERY가 있으면 DERIVED : FROM에 SUBQUERY가 있으면 UNION : UNION이 있으면 UNION_RESULT : UNION의 결과가 임시 테이블에 저장되면 table : 처..

Database 2022.08.15

MariaDB SQL INDEX - CREATE/DROP/ALTER FULLTEXT INDEX

CREATE FULLTEXT INDEX Statement Table에 FullText Index를 생성합니다. 자연어를 이용하여 INDEX를 생성하고 자연어를 이용하여 데이터를 검색할 수 있습니다. Column FULLTEXT Index 생성 구문 CREATE FULLTEXT INDEX index_name ON table_name (column_name); Multiple-Column FULLTEXT Index 생성 구문 CREATE FULLTEXT INDEX index_name ON table_name (column_name, column_name); DROP INDEX Statement Table에서 FullText Index를 삭제합니다. FULLTEXT Index 삭제 구문 ALTER TABLE ..

Database 2022.08.15

MariaDB SQL INDEX - CREATE/DROP/ALTER INDEX

INDEX(인덱스) Database에서 Row를 빠르게 검색하기 위해 Column을 색인으로 생성하고 색인으로 검색되게 합니다. CREATE INDEX Statement Table에 Index를 생성합니다. Column Index 생성 구문 CREATE INDEX index_name ON table_name (column_name[(length)]); Column에 length 설정하면 앞에서부터 설정된 length번째 문자까지 색인이 됩니다. Multiple-Column Index 생성 구문 CREATE INDEX index_name ON table_name (column_name[(length)], column_name[(length)]); 복합 INDEX는 Column 순서와 Join Column ..

Database 2022.08.14

MariaDB SQL JOIN - INNER JOIN, LEFT JOIN (LEFT OUTER JOIN), RIGHT JOIN (RIGHT OUTER JOIN)

JOIN Table 사이에 Related Column(서로 관련된 열)을 기반으로 Row를 Combine(결합)합니다. 결합 방식으로 INNER JOIN과 OUTER JOIN이 있습니다. INNER JOIN (두 Table의 교집합) 왼쪽 Table과 오른쪽 Table에서 Related Column(서로 관련된 열)들이 있는 Row를 Combine(결합)합니다. OUTER JOIN (두 Table의 합집합) LEFT OUTER JOIN : 왼쪽 Table의 모든 Row를 기준으로 Combine(결합)하여 오른쪽 Table에 Related Column(서로 관련된 열)이 없으면 오른쪽 Table의 모든 Column은 NULL로 채워진다. RIGHT OUTER JOIN : 오른쪽 Table의 모든 Row를 ..

Database 2022.08.14

MariaDB SQL JOIN - Driving Table, Nested Loop Join(NL Join), Sort Merge Join, Hash Join

Driving Table (드라이빙 테이블, 선행 테이블) Table들을 JOIN(결합)할 때 먼저 ACCESS(처리)이 되는 Table를 Driving Table(드라이빙 테이블)이라고 합니다. 간단하게 FROM 절에 있는 Table이 Driving Table(드라이빙 테이블)이라고 생각하면 됩니다. 결합되는 다른 Table를 Driven Table(드리븐 테이블) 또는 Inner Table(인너 테이블)이라고 합니다. 그래서 처리할 Row가 적은 Table이 Driving Table(드라이빙 테이블)이 되는 것이 좋습니다. 예를 들어, Table1의 Row가 100만 건, Table2의 Row가 1만 건이면 Table2가 Driving Table(드라이빙 테이블)이 되는 것이 좋습니다. 또한, WHE..

Database 2022.08.14

MariaDB SQL SELECT Statement

SELECT Statement Table에서 Row를 선택합니다. SELECT 구문 SELECT column_name, column_name FROM table_name; Row의 모든 Column들을 가져오려면 *(asterisk)를 사용합니다. SELECT * FROM table_name; MariaDB에 Table에 Row 추가하기 -- 전체 Row 삭제 DELETE FROM INT_BOARD_TB; -- Table의 AUTO_INCREMENT 설정 ALTER TABLE INT_BOARD_TB AUTO_INCREMENT=0; -- 초기 Row 추가 INSERT INTO INT_BOARD_TB (BRD_SUBJECT, BRD_CONTENT, REG_ID) VALUES ('테스트 제목 1', '테스트 ..

Database 2022.08.14

MariaDB SQL INSERT INTO Statement

INSERT INTO Statement Table에 새로운 Row를 추가합니다. INSERT INTO 구문 INSERT INTO table_name (column_name, column_name) VALUES (column_value, column_value); 모든 Column에 값을 추가할 경우 column_name를 지정할 필요가 없습니다. 그러나 column_value의 순서가 Column 순서와 같아야 합니다. column_value가 NULL이거나 DEFAULT이거나 AUTO_INCREMENT이면 생략할 수 있습니다. INSERT INTO table_name VALUES (column_value, column_value); MariaDB에 Table에 Row 추가하기 -- study Datab..

Database 2022.08.14

MariaDB 제약조건 외래 키 - Constraint Foreign Key - FK

FK (Foreign Key – 외래 키) 다른 Table의 PK를 Refers(참조)하는 값으로 Table 간의 관계를 파괴하는 작업을 방지하는 용도로 사용됩니다. PK가 있는 Table을 Parent Table이라고 하고 FK가 있는 Table를 Child Table이라고 하며 종속 관계가 됩니다. Table 생성 구문에서 Column을 FK로 생성합니다. CREATE TABLE IF NOT EXISTS table_name ( column_name1 data_type, column_name2 data_type, PRIMARY KEY (column_name1), FOREIGN KEY (column_name2) REFERENCES parent_table_name(column_name1) ); Table ..

Database 2022.08.14

MariaDB 제약조건 기본 키 - Constraint Primary Key - PK

PK (Primary Key – 기본 키) Table의 각 Recode(레코드 - row)를 Uniquely(고유)하게 식별할 수 있는 값으로 Table에서는 하나의 PK만 있을 수 있습니다. PK는 단일 또는 복수 Column으로 구성됩니다. Table 생성 구문에서 단일 Column을 PK로 생성합니다. CREATE TABLE IF NOT EXISTS table_name ( column_name1 data_type, column_name2 data_type, PRIMARY KEY (column_name1) ); Table 생성 구문에서 복수 Column을 PK_name으로 PK를 생성합니다. CREATE TABLE IF NOT EXISTS table_name ( column_name1 data_typ..

Database 2022.08.14

MariaDB 테이블 생성/삭제/수정 - CREATE/DROP/ALTER TABLE Statement

CREATE TABLE Statement Database에 새로운 Table를 생성합니다. Table 생성 구문 CREATE TABLE [IF NOT EXISTS] table_name ( column_name data_type ); Database에 table_name으로 새로운 Table를 생성합니다. CREATE TABLE table_name ( column_name data_type ); Database에서 table_name으로 된 Table이 없으면 생성합니다. CREATE TABLE IF NOT EXISTS table_name ( column_name data_type ); DROP TABLE Statement Database에서 Table를 삭제합니다. Table 삭제 구문 DROP TABL..

Database 2022.08.14

MariaDB 데이터베이스 생성/삭제/수정 - CREATE/DROP/ALTER DATABASE Statement

CREATE DATABASE Statement Database Server에 새로운 Database를 생성합니다. Database 생성 구문 CREATE DATEBASE [IF NOT EXISTS] database_name; Database Server에 database_name으로 새로운 Database를 생성합니다. CREATE DATABASE database_name; Database Server에서 database_name으로 된 Database가 없으면 생성합니다. CREATE DATABASE IF NOT EXISTS database_name; DROP DATABASE Statement Database Server에서 Database를 삭제합니다. Database 삭제 구문 DROP DATEBA..

Database 2022.08.14
728x90
728x90