728x90
728x90

SQL 11

Spring에 Mapper XML - Search 공통 처리, DAO - 카운트 기능 추가

Mapper XML에서 검색 조건 Model(모델)를 사용하여 에서 를 추가하여 처리하였습니다. 그런데 동일한 검색 조건 Model(모델)이 다른 에서도 사용된다면 어떻게 해야 할까요? 그냥 에 를 동일하게 추가해도 됩니다. 그런데 검색 조건이 추가되거나 수정된다면 모든 에서 를 수정해야 하는 번거로움이 있습니다. 그래서 Mapper XML에서는 동일하게 사용되는 쿼리문을 분리하여 재사용할 수 있게 를 지원하고 있습니다. 에서 동일하게 사용될 를 로 분리하여 재사용되도록 수정하겠습니다. Maven Spring Project에 Board Mapper XML 수정하기 1. com.home.study.test1.sqlmapl.mappers.mariadb.board 패키지에 있는 BoardMapper.xml 파..

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
728x90
728x90