MySQL
-
[MySQL] 인덱스(Index) 정리DataBase/MariaDB & MySQL 2020. 2. 9. 11:50
인덱스(Index) 정리 인덱스를 알아보기 전에 풀 스캔(Full Scan)과 레인지 스캔(Range Scan)을 이해해야 한다. 풀 스캔(Full Scan) & 레인지 스캔(Range Scan) 풀 스캔 : 테이블에 포함된 레코드를 처음부터 끝까지 읽어들인다. 레인지 스캔: 테이블의 일부 레코드에만 엑세스한다. 앞으로 예시로 들 테이블 구조 CREATE문 CREATE TABLE `user` ( `idx` bigint(20) NOT NULL AUTO_INCREMENT, `created_date` datetime DEFAULT NULL, `email` varchar(255) NOT NULL DEFAULT '', `name` varchar(255) DEFAULT NULL, `password` varchar(..
-
[MySQL] Mysql에서 프로시저(procedure) 안에 사용된 문자열 검색하기DataBase/MariaDB & MySQL 2019. 1. 15. 22:27
Mysql에서 프로시저(procedure) 안에 사용된 문자열 검색하는 방법.md 사용하지 않는 것으로 보이는 프로시저(procedure)를 삭제하려는데, 그 프로시저가 다른 프로시저를 콜하고 있었다… 이걸 어떡하지. 이 개념이라면 사용하지 않는 것으로 보였던 프로시저도 다른 곳에서 콜하면 어떡하지라는 생각이 들었다. 그래서 찾은 방법은 아래와 같다. SELECT ROUTINE_SCHEMA , ROUTINE_NAME , ROUTINE_DEFINITION , ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%찾고자하는 문자열%' AND ROUTINE_TYPE='PROCEDURE'; ROUTINE_SCHEMA : 스키마..
-
[MariaDB/MySQL]데이터 insert하면서 중복되면 update하는 기능DataBase/MariaDB & MySQL 2018. 5. 5. 14:34
다른 개발자분의 소스를 보다가 DB에 insert를 시행하는데 만약 데이터가 있다면 기존의 데이터를 덮어쓰기가 가능한 방법을 찾았다. MariaDB에만 있는 기능인지 오라클이나 다른 DB에도 있는 기능인지는 모르겠다. 일단, MariaDB/MySQL에 존재하는 기능이다. 그 기능은 INSERT ON DUPLICATE KEY UPDATE 기능이다. Primary key/Unique key가 기존에 존재하는 데이터를 찾을 경우, 그 데이터에 UPDATE를 하는 것이다. *쓰는 방법 예시 12345678910111213 INSERT INTO book_table SET book_seq = 1000 -- primary/unique key , book_title = 'greek zorba' , book_price ..
-
[mySQL] 프로시저 만들기(DECLARE, SET, IN, IF, ELSEIF 등)DataBase/MariaDB & MySQL 2018. 3. 5. 19:55
MariaDB에서 프로시저를 처음 만들어봤는데, 그 방법을 정리. 다른 방법도 많이 있지만 지금 내가 만든 프로시저로 내가 원하는 결과 값은 얻을 수 있었다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647DROP PROCEDURE IF EXISTS check_insert; /* 기존에 프로시저가 존재하면 DROP */CREATE PROCEDURE `check_insert`(IN in_pk_seq int(11) /* 받아야할 파라미터 */ , IN in_detail_seq int(11) , IN in_group_num varchar(32) , IN in_company_num varchar(32) , ..