본문 바로가기

백엔드/DB54

MySQL EXPLAIN 실행 계획 보기 (쿼리 최적화 하기) 사용이유 MySQL 쿼리를 실행할 때 최적화 계획을 세운다. 이러한 계획은 실행계획이라고 하는데 Explain 키워드를 사용해 실행계획에 대한 정보를 확인할 수 있다. 실행계획을 통해 문제가 발생하는 쿼리문을 이해하고 어떻게 최적화할지에 대한 인사이트를 제공하는 도구가 될 수 있다. 사용법 select문 앞에 explain 을 붙여서 사용한다. EXPLAIN SELECT * FROM table_name EXPLAIN SELECT * FROM table_name WHERE table_no = 1 explain을 사용해 쿼리문을 실행하면 아래 이미지와 같은 컬럼을 확인할 수 있다. 컬럼 설명 id : 쿼리 안에 있는 각 select 문에 대한 순차 식별자이다. 만약 하나의 select 문에서 여러 개의 테이.. 2022. 8. 19.
[PostgreSQL] 중복 데이터 하나만 남기고 삭제하기 delete 중복 데이터 확인 셀프 조인을 통해 중복된 행의 id값을 확인하는 방법이다. id가 제일 작은 값으로 사용한다. 근데 아래와 같은 명령어를 사용하면 데이터가 중복되어 좀 더 많이 보이는 현상이 있긴하다. schemas 에 본인이 사용하는 스키마 이름 tablename 에는 테이블 명을 입력해준다. select s1.* from schemas.tablename s1 join schemas.tablename s2 on s1.title = s2.title and s1.link = s2.link where s1.id > s2.id; 중복 데이터 삭제하기 sql문으로 데이터 삭제하기에 대해 검색하면 row_number 를 사용해 partition by로 중복된 컬럼을 지정하고 row_num>1 을 설정해 삭제할 .. 2022. 4. 8.
postgresql 한글 포함 여부 확인하기 postgresql 에서 한글을 포함한 데이터와 한글을 포함하지 않은 데이터를 추출하고자 한다. 한글을 포함한 데이터는 아래 쿼리문으로 사용하면된다. 자음까지도 확인하고 싶을때는 [ㄱ-힣] 로 사용하면된다. select * from tablename where column ~ '[0-9]+' and column similar to '%[가-힣]%' 한글을 포함하지 않은 데이터는 ^ 를 붙여서 사용한다. select * from tablename where column ~ '[0-9]+' and column similar to '%[^가-힣]%' 2022. 4. 7.
postgresql log 확인하기 postgresql 을 사용하다가 에러때문에 로그를 확인해야했다. 먼저 postgresql 이 설치되어 있는 경로로 들어간다. 경로가 기억나지 않으면 psql 로 접속해 아래 명령어로 경로를 확인할 수 있다. show data_directory; 혹은 아래 명령어가 있는 파일로 이동하면 로그파일의 위치를 찾을 수 있다. find / -name postgresql.conf 나의 경우 아래의 경로에서 로그를 확인할 수 있었다. /var/lib/pgsql/11/data/log ls 로 파일에 있는 내용을 보면 요일별로 로그가 저장되어 있는것을 확인할 수 있다. 2022. 4. 6.
DBeaver 에서 DB 데이터 내보내기 DBeaver 에서 DB 데이터를 내보낸 후 다른 곳에 불러와서 사용해보고자 한다. 데이터를 내보내고자 하는 테이블을 우클릭한 후 데이터 내보내기를 선택한다. 아래 옵션들 중 사용하고자 하는 타입을 선택하면 된다. 나의 경우 sql 로 내보낼 것이다. 다음을 누르면 아래와 같은 내용이 나오고 다음을 누르고 넘어간다. 아래 이미지에서 Directory 부분에는 sql 데이터를 저장하고자 하는 위치를 적어준다. file name pattern 에 있는 이름으로 저장이 된다. 다음을 누르면 저장하고자 하는 데이터의 마지막 확인 내용이 나온다. 2022. 4. 6.
mysql/postgresql 중복되는 데이터 항목 찾기 중복 데이터 찾기 mysql 에서 특정 컬럼에서 중복되는 항목이 있는지 찾고자 한다. 컬럼 하나일 때 select 컬럼이름 , count(컬럼이름) from 테이블이름 s group by 컬럼이름 having count(컬럼이름) > 1 컬럼 여러개일 때 select 컬럼이름1, 컬럼이름2, 컬럼이름3, count(컬럼이름1) from 테이블이름 s group by 컬럼이름1, 컬럼이름2, 컬럼이름3 having count(컬럼이름1) > 1 select title,date,site , count(title) from tablename s group by title ,date,site having count(title) > 1 2022. 4. 5.