본문 바로가기

SQL

[MySQL_MariaDB] 전체텍스트 검색과 파티션 신문기사 테이블(아래표)을 생성하고, 일반 인덱스(위표)를 생성했다고 가정해보자. 1. 신문기사의 내용을 모두 알아서 검색하면 당연히 빠르다. 2. 앞글자 like검색도 인덱스를 통하여 위위사진(신문기사 인덱스)처럼 정렬되어 있기에 검색이 빠르다. 하지만 위처럼 보통 앞뒤로 like 검색을 하는 경우가 일반적이다. 이럴 경우 일반 인덱스가 있어도 FullScan을 할 수 밖에 없다. 10년치의 기사에거 검색이라고 생각해보자. 결과적으로 매우 느리다. 전체 텍스트 검색은 이러한 문제를 해결해준다. 첫글자 뿐만 아니라, 중간의 단어나 문장으로도 인덱스를 생성해 주기 때문에 지금과 같은 상황에서도 인덱스를 사용할 수 있어 순식간에 검색 결과를 얻을 수 있다. 전체 텍스트 인덱스를 생성하는 방법 3가지 MySQ.. 더보기
[MySQL_MariaDB] 커서_loop_select 한줄한줄 읽으며 처리 고객의 평균키를 구하는 프로시저. AVG 함수가 더 적절하지만, 홀수의 평균값이나 5의 매수에 해당하는 값의 평균 등 특별한 경우 커서는 사용된다. 41,42. 커서 선언시 파일을 읽어(select) 파일의 제일 시작을 가르키게됨. 10~15. 커서 선언 : 파일을 읽어(select) 시작부분을 가르킨다. 17,18. 행의 끝일 때 endOfRow 변수에 true 대입. 19. 커서를 연다. 21. 커서에서 읽은 1줄은 id, hap 변수에 대입 더보기
[MySql_mariaDB] 스토어드 함수 Function * 스토어드함수 > MySQL이 사용자가 원하는 함수를 전부 제공하지 않으므로, 필요에 따라 직접 만들어서 사용하는 함수를 스토어드 함수라 한다. * 스토어드 함수의 특징 1. 스토어드 프로시저와 달리 IN, OUT 등을 사용할 수 없다. 스토어드 함수의 파라미터는 모두 입력 파라미터로 사용된다. 2. RETURNS문으로 하나의 값을 반환해야 한다. 프로시저는 별도의 반환하는 구문이 없으며, 꼭 필요하다면 OUT 파라미터를 사용해서 값을 반환한다. 3. 스토어드 프로시저는 CALL로 호출하지만, 스토어드 함수는 SELECT 문장 안에서 호출된다. 4. 스토어드 프로시저 안에는 select 문을 사용할 수 있지만, 스토어드 함수 안에서는 집합 결과를 반환하는 select를 사용할 수 없다. * select.. 더보기
[SQL] JOIN 조인 5. inner join(내부조인 = join) : 가장 일반적인 조인 양쪽 테이블에 모두 있는 것만 조인된다. 위는 select ~ from ~ join ~ where 순의 구조로 이루어진다. Buytbl은 12개의 데이터 모두 아이디를 가지고 있다. Usertbl 10개의 데이터. 한번도 구매하지 않은 이승기, 김경호, 임재범, 윤종신, 조관우는 구매테이블에 없다. * inner join : 양쪽 테이블에 모두 있는 데이터만 추출한다. 즉, 구매한 이력이 있는 아이디만 출력되므로 구매테이블에 있는 데이터들이 기준이된다.(즉, 교집합) 6. 테이블명.컬럼명 : 어떤 컬럼명인지 테이블을 명시해 주어야한다. 별칭으로도 가능하다. * outer join(외부조인) : 조건에 만족하지 않는 행까지도 포함시키는.. 더보기
[mariadb_mysql] 대량의데이터(TEXT,CLOB) 3. longtext : 최대 4GB까지 저장할 수 있다. 7. 각각 1M, 3M의 크기가 입력되었다. 영문자는 한글자에 1Byte를 차지하고, 한글은 3Byte를 차지하기 때문이다. 각각 천만개의 문자를 입력하면 에러가 발생한다. Max_allowed_packet의 최대값이 4백만 바이트(=4M)이기 때문이다. 영문은 10M, 한글은 30M를 사용하기에 에러. * Max_allowed_packet : 서버로 질의하거나 받게되는 패킷의 최대 길이. 시스템변수. MySQL을 설치한 경로에 my.ini를 오픈하여, 1G(1000M)로 수정 Mysql 서비스 재시작 10M와 30M가 정상적으로 insert된다. 더보기
[mysql_mariadb] 내장함수_foreignkey수정 * 함수의 종류 1. 제어 흐름 함수 2. 문자열 함수 3. 수학함수 4. 날짜/시간 함수 5. 전체 텍스트 검색함수 6. 형 변환 함수 7. XML함수 8. 비트함수 9. 보안/압축함수 10. 정보함수 11. 공간 분석 함수 12. 기타함수 1. 제어 흐름 함수 : 프로그램의 흐름을 제어한다. 3. if(수식, 참, 거짓) > 수식이 참 또는 거짓인지 결과에 따라 2중 분기한다. 3. ifnull(수식1, 수식2) > 수식1이 null이 아니면 수식1이 반환, 수식1이 null이면 수식2가 반환된다. 3. nullif(수식1, 수식2) > 수식1이 수식2와 같으면 null을 반환, 다르면 수식1을 반환 3~8. Case ~ when ~ else ~ end > case는 내장함수는 아니며 연산자로 분류된.. 더보기
[MySql MariaDB] 변수_json데이터 * 변수 > 프로그래밍과 마찬가지로 전역/지역변수로 나뉨. > 전역변수의 경우 워크벤치를 재시작할 때까지는 계속 유지(즉, 커넥션을 한번 맺은 상태에서 변수는 계속 살아있음.) 커넥션을 끊으면 사라짐. 전역변수 사용법 기본 limit에는 원칙적으로 변수를 사용할 수 없으나 prepare와 execute문을 활용해서 변수를 활용할 수 있다. 4. prepare : 쿼리이름 지정 5. from : ‘쿼리문’ 6. excute 를 통해 using @변수를 이용해 쿼리문의 ? 와 매핑된다. * Json : javascript언어에서 파생되었으며, 프로그래밍 언어에 종속되어 있지 않은 독립적인 데이터 포맷 5. json_object : mysql5.7.8부터 지원. 내장함수를 통해 변환된다. Json_array .. 더보기
[MySQL_MariaDB] 데이터타입 정리 숫자 데이터 형식 문자데이터 형식 날짜 시간 및 기타 데이터 형식 더보기