분류 전체보기191 [Database] MySQL ORDER BY 방식 비교와 성능 목차인덱스를 이용한 정렬 (extra에 별도 표기 없음)driving table만 정렬 (Using filesort)임시 테이블을 이용한 정렬 (Using temporary; Using filesort) MySQL에서 ORDER BY (정렬)을 처리하는 방식은 크게 2가지가 있다. 인덱스를 활용하는 인덱스 정렬과, 메모리 (혹은 디스크까지)를 활용해서 정렬하는 filesort이다. 이 2가지 방법을 토대로 옵티마이저는 크게 세 가지 형태로 정렬을 진행할 수 있는데 결론부터 말하자면,가능하다면 인덱스를 사용한 정렬로 유도 하고, (인덱스 정렬)그렇지 못하면 최소한 드라이빙 테이블만 정렬해도 되는 수준으로 유도하는 것이 좋은 튜닝방법이다. (filesort)그렇지 않으면 임시 테이블을 이용해 정렬하게 되는.. 2024. 7. 16. 2024 미국 서부 여행에서 찍은 스냅 2 - LA 2024. 7. 16. 2024 미국 서부 여행에서 찍은 스냅들 1 - 그랜드 서클 2024. 7. 16. [Kotlin, jackson] non-null 객체에 런타임에 null 초기화하는 문제 코틀린은 compile-time에 변수의 null 여부를 검사할 수 있는 null-safety 기능을 제공한다. 그러나 run-time에 null이 초기화되는 것은 체크할 방도가 없다. 따라서 위 테스트는 말끔하게 통과하는 불상사가 일어난다. 코틀린으로 스프링 개발할 때 jackon 라이브러리에서 필드값들을 (역) 직렬화 작업을 하면서 위 현상을 보고, NPE까지 터지는 일이 발생한다. 다행히도 jackson에서 아래 같은 애노테이션을 지원한다. 2024. 6. 25. [algorithm] 정렬 4. 정리 및 응용 목차어떤 정렬 알고리즘을 사용해야 하는가환원 : 정렬 알고리즘 응용하기정렬알고리즘 사용 사례어떤 정렬 알고리즘을 사용해야 하는가 명제 : 퀵-정렬은 가장 빠른 범용 정렬 알고리즘이다.위 가설은 퀵-정렬이 개발된 이래 수십 년간 수많은 컴퓨팅 시스템에서 수많은 방식으로 구현되어 왔다. 일반적으로 퀵 정렬이 빠른 이유는 내부 루프의 명령어 수가 적기 때문이다. 결론 : 대부분의 실제 상황에서 퀵-정렬을 선택하는 것이 안전하다. 그 선택이 올바른지는 예외 상황들을 토대로 살펴봐야 한다. 예를 들어 안정정렬이 중요하고 공간이 충분하다면 병합 정렬이 최선일 것이다. 기본형 데이터 타입의 정렬성능에 매우 민감하거나 숫자의 정렬에만 집중한다면 int와 같은 기본형을 사용하는 것이 좋다. int는 후술 할 포인터 .. 2024. 6. 22. [Kotlin, JPA] Should have [public, protected] no-arg constructor @Entity@Table(name = "member")data class Member( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, @Column val nameMember: String, @Column val ymdtCre: LocalDateTime = LocalDateTime.now(), @Column val ymdtUpdt: LocalDateTime?) 에러 메시지에 원인이 나와있다. public, protected 접근제어자로 기본생성자를 만들라는 컴파일 에러다. 엔티티는 반드시 기본 생성자를 가져야한다. Java라면 Lombok을 사용해 @NoArg.. 2024. 6. 10. 이전 1 2 3 4 5 6 ··· 32 다음