index가 있어도 사용할 수 없는 경우 where에 부정이 있으면 index를 사용할 수 없다. 그래도 limit 절이 있으면 full join을 해도 문제가 없지만, 그게 아니라면 성능에 문제가 있을 수 있다 sort group by group by 를 하면 자동으로 group by 한 컬럼으로 정렬된다. 이로 인한 overhead를 막으려 한다면 order by null ORDER BY 에서 인덱스를 사용하지 못하는 경우 서로 다른 키를 ORDER BY에 사용하는 경우 키의 일부를 사용할 때 오름차순과 내림차순을 섞는 경우 ORDER BY 절에 사용된 키와 열을 가져오기 위해 사용된 키가 다른 경우 ORDER BY 에 키의 컬럼이 아닌 다른 표현을 사용했을 경우 (함수 사용) ORDER BY나 GR..

BLOB (binary large object) 네 타입의 차이는 maximum length에 있다. TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB 네 가지 타입이 있다 TEXT TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT 네 가지 타입이 있다 각각은 BLOB 과 maximum length와 저장 요구조건이 매치된다 BLOB과 달리 nonbinary string (character string)으로 다루어진다. binary 와 nonbinary 는 비교, 정렬 조건이 다르다 끝 부분에 space 를 두기 때문에 비교 시 ‘a’와 ‘a ‘는 같다고 인식한다 공통 insert 시 padding 이 없고 select 시 어떠한 바이트도 추가되지 않는다 DEFAULT 값..

session이나 connection 과 DB lock 간의 관계 A session can acquire or release locks only for itself. One session cannot acquire locks for another session or release locks held by another session. 세선은 그 자체만으로 lock을 잡거나 풀 수 있다. 단 다른 세션을 위해 락을 잡거나 해제하는 것은 못한다. 명시적으로 해제하지 않더라도, 모든 락은 세션이 끝날 때 자동적으로 해제된다. Concurrency Control DB에서의 lock은 Concurrency Control 을 하기 위한 메커니즘이다. 배타 모드와 공유 모드가 있다. 배타 모드는 write 할 때, ..
쿼리문을 이렇게 저렇게 작성해보면서 실행 계획을 비교하다가 문득 스칼라 서브 쿼리와 인라인 뷰, 서브 쿼리의 차이와 실제 동작 원리가 궁금해져서 조사해보았다. 스칼라 서브쿼리 (Scalar Subquery) SELECT 문에 쓰이는 서브 쿼리이다. 입력에 따라 하나의 값만을 출력해야 한다. 스칼라 서브 쿼리는 기본적으로 outer join으로 동작한다. 쿼리 수행 횟수를 최소화하기 위해 입력값과 출력값을 내부 캐시에 저장해두고 입력값이 캐시에 있으면 해당하는 출력값을 리턴한다. 없으면 다시 실행한다. 그래서 스칼라 서브쿼리는 입력값이 정해진 값이거나 거의 변경되지 않는 경우에 사용하는 것이 효율적이다. 그렇지 않으면 바뀌는 입력값마다 매번 반복적으로 실행되어 매우 비효율적일 수 있다. 인라인 뷰 (Inl..
- Total
- Today
- Yesterday
- effective-java
- fetchResults
- TroubleShooting
- 이벤트스토밍
- Generic
- point
- DesignSystem
- Spring-Boot
- Lombok
- 코테 log
- sort algorithm
- 암호화
- 사고..
- Git
- SQL 전문가 가이드
- ruby
- Java
- 이펙티브자바
- IntelliJ
- ASCII
- Encoding
- aws
- querydsl
- WebClient
- 메모리 릭
- ActiveAdmin
- SHA
- gitignore
- 실용주의
- annotation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |