개발/MySQL
-
mysql varchar size변경개발/MySQL 2021. 9. 28. 11:36
출처 - https://kimdubi.github.io/mysql/varchar/ 대량의 데이터가 적자될 것으로 예상되는 테이블에 컬럼 추가 필요성을 느껴 작업을 하게 되었다. 문제는 스펙에 사이즈가 나와있어, 해당 사이즈를 명확히 할 것인지. 스펙을 정의한 곳에 신뢰가 완전하지 않아 여유를 둘 것인지에 대한 고민이다. 물론 varchar형태가 가변형이기 때문에 크게 해도 성능상 이슈가 없으니 미리 크게 잡아두는게 편하지 않냐는 생각과 명확한 사이즈를 통해 해당 길이의 패턴이나 의미전달을 할 수 있지 않을까란 생각이 또 충돌하였다. 추후 사이즈를 변경하는것에 대한 부담감을 갖지 않도록 사이즈 변경은 db에 무리없이 작업할 수 있는지 알아봤다. 1. varchar size 256 bytes 이하구간에서 증..
-
non clustered index 로 검색할때 order by, limit 조건에 따라 지연 현상(mysql)개발/MySQL 2021. 6. 25. 23:33
약 20만개의 데이터가 들어 있는 테이블을 날짜로 조회하려고 하니, 평소와는 다르게 지연이 생겼다. 이를 찾다, 찾다 확인해보니 해당 쿼리의 응답이 늦는 것을 확인 할 수 있었다. 1. 지연이 생기는 코드 SELECT * FROM table WHERE date BETWEEN "2021-06-24" AND "2021-06-25" ORDER BY id desc LIMIT 100; index를 걸어둔 date를 해당 구간으로 조회를 한 후 100를 id 기준 내림차순으로 정렬하는 쿼리이다. 하지만 결과가 제한된 수인 100개 이상일 때는 문제가 없지만 이 이하가 되는 경우 응답이 늦었다.(정렬기준이 오름차순도 마찬가지였다. 즉 limit 수보다 근소하게 작을때, 오름차순이든, 내림차순이든 정렬을 함께 하게되면..
-
클러스터드 인덱스와 넌 클러스터드 인덱스개발/MySQL 2021. 4. 8. 22:48
참고 : https://lng1982.tistory.com/144 생각 : 클러스터드 인덱스는 테이블당 하나만 생성되며 pk가 이 클러스터드 인덱스다. 클러스터드 인덱스는 정렬되어있기 때문에 leaf level의 인덱스가 필요하지 않아서 db 용량을 덜 차지한다. 저장할때 물리적으로 정렬하여 저장한다 넌 클러스터드 인덱스는 검색 향상을 위해 사용자가 추가하는 것이 해당된다. 한 테이블당 249개까지 생성이 가능하다 넌 클러스터드 인덱스는 별도의 공간에 테이블을 생성하여 데이터를 정렬하고 leaf level의 인덱스가 필요하다 테이블 전체 데이터 집합 중에 특정 조건에 의해 데이터가 걸러지는 비율을 선택도라 하며 클러스터드 인덱스는 정려되어 있기 대문에 넌 클러스터드 인덱스보다 높다 MySQL은 PK에 대..
-
MySQL 프로시저 PROCEDURE 생성(CASE문, IF문)+ 추가 FUNCTION개발/MySQL 2019. 4. 2. 19:30
DB에서 작업을 수행하는 함수나 프로시저 생성을 하게 되었다. 다뤘던 프로젝트에서 생성된 함수를 사용 한 것을 보았기 때문에 처음 생각한 것은 함수였으나 프로시저의 속도가 빠르고 구조와 기능에 차이가 없다는 글을 보고 프로시저로 선택했다. 작업후기: 사용법에서 큰 차이가 있다. 프로시저의 호출은 CALL 프로시저 만 되지만 함수의 경우 SQL문 내에서도 사용이 가능하다. 예를들어 처리된 ID를 불러오는 함수 A(id_before) 이 있다면 SELECT * FROM TABLE ID = A(id_before) 이런식으로 구문에서 바로 함수를 호출하여 사용이 가능 한 것이다. 내가 필요한 기능은 이 부분이었기 때문에 함수를 추가로 만들었다. 함수와 프로시저에 대해 간단히 알아 본 결과 둘의 구조는 동일하나(..