인덱스를 타지 않는 쿼리1. function or operation querySELECT * FROM employee WHERE UPPER(name) = 'AHN'; SELECT * FROM employee WHERE YEAR(worked_at) = 2023; SELECT * FROM employee WHERE age + 1 = 100; 인덱스 컬럼에 함수 또는 연산을 수행하는 경우 데이터베이스는 인덱스를 사용하지 못합니다. 이유:인덱스는 Key의 순서대로 정렬되어 있습니다.이를 함수나 연산을 통해 인덱스에 변환을 수행하면, 기존 인덱스와의 순서가 불일치하는 문제가 생겨 인덱스를 통해 탐색을 하지 못합니다. 2. Like문 검색에서 와일드카드의 위치SELECT * FROM employee WHERE na..
Mysql 쿼리 속도 개선 4 가지SQL 쿼리에 적용된 실행 계획 확인하는 방법 - explainexplain select * from crew 1. select 실행 시 필요한 column만 뽑기많은 필드 값을 불러올수록 데이터베이스는 더 많은 로드를 부담합니다.column 중에 불필요한 값을 가진 필드가 있다면 과감히 제외하고, select 절에 필요한 열만 지정해 불러오는 것이 좋습니다. 2. 조건 부여 시, 기존 DB 값에 별도의 연산을 걸지 않기-- InefficientSELECT m.id, ANY_VALUE(m.title) title, COUNT(r.id) r_count FROM movie m INNER JOIN rating r ON m.id = r.movie_id WHERE FLOOR(r.v..
Index인덱스 파일은 데이터베이스에서 쿼리 성능을 향상시키기 위해 테이블의 특정 컬럼 값과 해당 행의 위치(Pointer)를 저장합니다.인덱스는 테이블의 데이터를 효율적으로 검색하기 위한 자료구조를 활용합니다. (B-Tree, Hash)Indexed Column Value인덱스가 설정된 컬럼의 실제 값들이 저장됩니다.해당 값을 이용해 데이터베이스가 특정 행을 찾는 데 필요한 정보로 사용합니다.Indexed Column Value: 101, 102, 103, 104, ...Row Pointer인덱스 파일에는 해당 인덱스 키 값이 테이블의 어느 행에 위치하는지에 대한 정보를 나타내는 포인터가 함께 저장됩니다.해당 포인터는 테이블의 실제 데이터 행을 가리킵니다.Indexed Column Value: 101 ..
HTTP 간단한 설명HTTP( Hypertext Transfer Protocol)로 웹에서 클라이언트와 서버 간 통신을 위한 프로토콜입니다.HTTP를 이용한 데이터 전달은 TCP 세션 기반으로 이루어집니다. (Application 계층에 속함)HTTP/1.0HTML 문서만 날리는 HTTP/0.9와 다르게 다양한 파일(css, image)을 받을 수 있게 되었습니다. 세부 설명매번 새로운 연결로 성능 저하하나의 데이터를 받을 때마다 서버 측에서 연결을 끊습니다.요청마다 TCP 세션을 맺어야 합니다.서버 부하 비용 상승RTT 증가 : 패킷이 목적지에 도달하고, 다시 출발지로 돌아오기까지 걸리는 시간입니다. (패킷 왕복 시간)HTTP 1.0은 기본적으로 Connection 당 하나의 요청을 처리합니다.동시 전..