에러해결 & 최적화/DB

가끔 데이터 집계나 중복데이터 확인을 위해 중복값을 찾아야 하는 경우가 있다. (가장 흔한 경우로는 회원가입시 동일한 id 로 가입을 막기위해 id 중복확인 같은 기능이 있을 것 같다) 이럴때 사용하면 좋은 중복값 카운팅하는 쿼리를 공유해보고자 한다. (mysql 기준인데 각자 db 에 맞게 변형하면 될듯하다) SELECT 중복값 체크할 컬럼명, count(*) FROM 테이블명 WHERE where조건 GROUP BY 중복값체크할컬럼명 HAVING count(중복값 체크할 컬럼명)>1;
Mysql에서 가끔 커넥션이 부족하거나 내가 날린 쿼리가 너무 느려서 잘 실행되고 있는지 확인하고 싶을때가 있습니다. MySQL에서 현재 실행 중인 쿼리를 확인하려면 다음 명령어를 사용할 수 있습니다. MySQL 콘솔 또는 클라이언트에서 다음과 같이 입력하면 됩니다. SHOW FULL PROCESSLIST; 각 컬럼의 의미와 예시를 아래에 설명합니다: Id: 각 실행 중인 쿼리의 고유 식별자입니다. 예시: 1, 2, 3, ... User: 쿼리를 실행하는 MySQL 사용자의 이름입니다. 예시: root, myuser, ... Host: MySQL에 연결한 호스트 또는 IP 주소입니다. 예시: localhost, 192.168.1.100, ... db: 현재 쿼리가 실행 중인 데이터베이스의 이름입니다. 예..
MySQL에서 조건절에서 컬럼에 캐스팅을 사용하면 성능에 영향을 미치는 이유는 다음과 같습니다. 1. 인덱스 활용 어려움 캐스팅을 통해 컬럼의 데이터 형식이 변경되면, 해당 컬럼에 대한 인덱스 활용이 제한됩니다. 인덱스는 원본 데이터 형식을 기반으로 작성되며, 캐스팅을 적용하면 인덱스가 효과적으로 활용되지 못합니다. 결과적으로 조건 검색 시 성능 저하가 발생할 수 있습니다. 2. 풀 스캔 필요 캐스팅을 사용하면 데이터베이스 시스템은 모든 레코드를 순회하여 조건을 충족하는 레코드를 찾아야 합니다. 이는 "풀 스캔"이라고 알려져 있으며, 데이터베이스 성능을 저하시키는 주요 원인 중 하나입니다. 특히 대용량 테이블에서 더 큰 문제가 발생할 수 있습니다. 3. 타입 불일치 캐스팅을 적용하면 데이터 타입이 변경되..
인덱스는 데이터베이스 성능을 향상시키고 쿼리 속도를 향상시키는 중요한 역할을 합니다. 인덱스를 설계할때 주의할 점에 대해 짚어보겠습니다. 1. 선택적 인덱스 사용 가장 뻔한 이야기긴 하지만 인덱스를 설계할 때, 자주 사용되는 열을 선택적으로 인덱싱해야 합니다. 불필요한 인덱스는 성능 저하의 원인이 될 수 있습니다. 나쁜 예시 좋은 예시 모든 열에 인덱스를 추가하면 인덱스 크기가 커져 디스크 공간 낭비와 성능 저하 발생 가능. 주문 테이블에서 주문일자 열에만 인덱스를 추가하면 주문일자로의 검색에 최적화. 2. 복합 인덱스 활용 복합 인덱스는 여러 열을 함께 인덱싱하는 것으로, 여러 조건을 동시에 사용하는 쿼리를 최적화할 수 있습니다. 나쁜 예시 좋은 예시 각각 단일 열에 별도의 인덱스 생성 => 이름 열과..
Chung-A
'에러해결 & 최적화/DB' 카테고리의 글 목록