전체 글(256)
-
[업무에 바로 쓰는 SQL 튜닝] 4.2.3 형변환으로 인덱스를 활용하지 못하는 나쁜 SQL 문
목차❌ 문제의 SQL 문😎 실행 계획 살펴보기⭕ 형변환이 발생하지 않도록 SQL을 수정해 보자🚀 정리 ❌ 문제의 SQL 문요구사항: 급여 테이블에서 현재 유효한 급여 정보만 조회하는 쿼리를 작성해 주세요.사용여부 열의 값이 1인 데이터가 유효한 급여 정보입니다.SELECT COUNT(*) FROM 급여 WHERE 사용여부 = 1; 출력:1건이 출력되었고 데이터는 총 42,842건이며 sql 소요시간은 약 0.48초로 나타났다. 😎 실행 계획 살펴보기key항목이 I_사용여부로 출력되고, type항목이 index이므로 인덱스 풀 스캔 방식으로 테이블의 데이터를 찾고 있다. 그리고 filtered항목이 10이므로 MySQL엔진으로 가져온 데이터 중 10%를 추출해서 최종 데이터를 출력했다는 것..
2024.09.13 -
[업무에 바로 쓰는 SQL 튜닝] 4.2.2 사용하지 않는 함수를 포함하는 나쁜 SQL문
목차❌ 문제의 SQL 문😎 실행 계획 살펴보기⭕ 불필요한 IFNULL() 함수를 제거해 보자🚀 정리 ❌ 문제의 SQL 문요구사항 : 사원 테이블에서 성별 기준으로 몇 명의 사원이 있는지 확인하는 쿼리문을 작성해 주세요.SELECT IFNULL(성별, 'NO DATA') AS 성별, COUNT(*) 건수 FROM 사원 GROUP BY IFNULL(성별, 'NO DATA') 만약 성별의 값이 NULL이라면 NO DATA라고 출력할 수 있도록 IFNULL() 함수를 사용하여 구현했다.2개의 행이 출력되었고, 약 0.12초가 소요되었다. 😎 실행 계획 살펴보기I_성별_성 인덱스로 인덱스 풀 스캔 방식을 수행하며, Extra 항목이 Using temporary로 임시 테이블을 생성한다는 것을 알 ..
2024.09.10 -
[업무에 바로 쓰는 SQL 튜닝] 4.2.1 기본키를 변형하는 나쁜 SQL문
4장은 문제가 있는 SQL문과 개선된 SQL문을 소개해주고 있다. 팀원과 한 파트씩 나눠서 발표 스터디를 진행하기로 했고, 오늘은 그 첫 번째 사례이다. 나는 도커 컨테이너 하나를 생성하고 안에 실습할 데이터베이스를 미리 넣어두었다. 그랬더니 컨테이너에 접속만 하면 쉽게 실습할 수 있어서 아주 편리했다! 다음은 목차이다. 앞으로도 목차는 비슷하게 흘러갈 예정이다.❌ 문제의 SQL 문😎 실행 계획 살펴보기⭕ 사원번호(기본키)가 인덱스를 타도록 수정해 보자🚀 정리 ❌ 문제의 SQL 문[주의] MySQL에서 문자열의 인덱스는 1부터 시작한다. 요구사항 :사원번호가 1100으로 시작하면서 사원번호가 5자리인 사원의 정보를 모두 출력해 주세요.SELECT * FROM 사원 WHERE SUBSTRI..
2024.09.08 -
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 후보키
후보키문제https://school.programmers.co.kr/learn/courses/30/lessons/42890더보기입출력 예 제한사항relation은 2차원 문자열 배열이다.relation의 컬럼(column)의 길이는 1 이상 8 이하이며, 각각의 컬럼은 릴레이션의 속성을 나타낸다.relation의 로우(row)의 길이는 1 이상 20 이하이며, 각각의 로우는 릴레이션의 튜플을 나타낸다.relation의 모든 문자열의 길이는 1 이상 8 이하이며, 알파벳 소문자와 숫자로만 이루어져 있다.relation의 모든 튜플은 유일하게 식별 가능하다.(즉, 중복되는 튜플은 없다.) 문제 분석• 후보키 : 릴레이션의 튜플을 유일하게 식별할 수 있는 속성 또는 속성의 집합으로 유일성과 최소성을 만족함• ..
2024.07.31 -
[리트코드] 51. N-Queens
51. N-Queens문제https://leetcode.com/problems/n-queens/description/더보기Example 1:Input: n = 4Output: [[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] Example 2:Input: n = 1Output: [["Q"]] Constraints:1 문제 분석n * n 크기의 체스판에 n명의 여왕이 서로 공격할 수 없도록 위치시키는 문제로 퀸이 위치한 자리에서 같은 행, 열, 대각선에 다른 퀸이 없어야 한다.• 'Q' : 여왕 위치• '.' : 빈칸 입력n : 여왕 수 출력순서에 상관없이 가능한 모든 정답을 출력 접근 방법아이디어 ➡️ 백트래킹퀸은 같은 행, 열, 대각선에 다..
2024.07.29 -
[리트코드] 37. Sudoku Solver
37. Sudoku Solver문제https://leetcode.com/problems/sudoku-solver/description/더보기Example 1:Input: board = [["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9","5",".",".","."], [".","9","8",".",".",".",".","6","."], ["8",".",".",".","6",".",".",".","3"], ["4",".",".","8",".","3",".",".","1"], ["7",".",".",".","2",".",".",".","6"], [".","6","."..
2024.07.27