본문 바로가기

Database/DB

(43)
sql Index 고려사항 1. 인덱스 대상 후보컬럼 선정 기준 분포도가 좋은 컬럼인가? 분포도의 기준은 1%이내 ex) 주문 테이블의 ‘배송여부’ 컬럼은 Y/N으로 분포도는 50%이다. 논리적식별은 50%이지만 대부분의 실데이터는 Y가 될것이고 분포도가 한쪽으로 극단적으로 쏠리기 때문에 인덱스 후보로 해도된다. ex) 고객 테이블의 성별은 남자/여자 로 50%이다. 하지만 이는 변하지 않는 데이터 이며, 50%의 분포도를 가지므로 인덱스가 딱히 필요치 않다 결합 인덱스의 경우도 해당 결합된 데이터의 분포도를 추산하여 인덱스를 선정한다. 갱신이 자주 발생하지 않는 컬럼인가? update가 발생하면 index를 갱신하기 때문에 성능에 좋지 않지만! 꼭 필요한 경우에는 복합인덱스로 해야 한다. ( 검색 조건에 필요한 경우에 ) 조건절..
Field 'ssl_cipher' doesn't have a default value ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value Mysql 버전이 높아지면서 보안관련 인한 오류 User 생성시 Host, User ,Password, ssl_cipher, x509_issuer, x509_subject 를 입력 필수 ssl_cipher, x509_issuer, x509_subject 값은 '' 빈값을 입력. $ insert into user (Host, User, Password, ssl_cipher, x509_issuer, x509_subject ) values('localhost','사용자명',password('비밀번호'),'','',''); ERROR 1364 (HY000): Field 'authenticat..
mysql only_full_group_by SET sql_mode = '' or set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql int bigint mysql을 사용하면서 몰랐던 정보들을 알아서 적어본다. int / bigint 에 관한 내용인데 먼저 int / bigint 의 최대값은 unsigned 일 경우 각각 4억과 4천경이다(저만큼 넣을 데이터가 있는건가..)...... int는 4바이트(자릿수 10자리) bigint는 8바이트로 (자릿수 20자리) 로 생각면 된다. 자세한 사항은 공식 홈피 확인 https://dev.mysql.com/doc/refman/5.5/en/integer-types.html 두번째로 대부분 많은 분들이 테이블 선언시 int(4) 하면 4자리까지만 들어간다고 생각하실수도 있는데 (실은 내가 그랬다.) 만일 3자리 숫자 999 를 넣었다면 출력될때 0999 로 해당 4자리이하일때 앞에 0을 붙여서 내보낸다. (zero..
mysql workbench 작업시 fk 칼럼 속성 변경시엔 확인을 잘해야합니다. 재미있는것을 발견( 지금까지 몰랐던것을 발견)!! 테이블간의 관계인 fk( Foreign Key Constraint) 가 설정되어 있을때 fk 생성시 해당 칼럼을 not null 속성을 넣지 않았다. (이건 가능함)헌데 not null 속성을 넣을려면 먼저 해당 fk 를 지운후 alter 로 notnull 속성을 넣어준후 다시 fk 속성을 넣어줘야 한다. 여기까진 문제가 없다. 이번엔 unsigned 속성을 넣어보려 한다. 헌데 fk의 기본이 되는 pk 속성중에 unsigned 속성이 없다면 어떻게 되느냐?! 아까와 같이 "먼저 해당 fk 를 지운후 alter 로 unsigned 속성을 넣어준후 다시 fk 속성을 넣어줘야 한다. "에서 unsigned 속성을 넣은후 다시 fk 속성을 넣을 때 에러가 발생..
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) mysql 만일 mysql 이 설치가 되었고 ps -ef | grep mysql 현 상태에서 서비스가 실행중이라면 실행하고 다시 접속하면 정상적으로 실행된다. mysqld_safe --user=root &
oracle 부정형 조인(ANTI JOIN) 두개의 테이블에서 각각 한개의 칼럼을 비교하여 없는것을 찾는 조인이 부정형 조인 / 안티 조인이라 한다. 두개의 테이블 A , B 가 아래와 같이 있다고 하자. 만일 A not in (B) 를 한다면 결과 값은 bbb 가 나오게 된다. 만일 B not in (A) 가 된다면? 아래의 그림처럼 ccc, ddd 가 나오게 된다. 소스는 심플하다. select distinct a.id , a.namefrom A awhere a.id is not null and a.id not in (select /*+ HASH_AJ*/ id from B where id is not null) - 오라클 11g부터는 not null을 명시 하지 않아도 된다. 그전 버전을 사용한다면 꼭 not null을 넣어주기 바랍니다.(결과..
toad 쿼리에서 갑자기 한글이 않보일때!! toad 결과의 한글이 깨진게 아닙니다. sql 쿼리 날릴때 한글이 갑자기 않보입니다.(결과가 깨진게 아닙니다.)근데 쿼리는 정상적으로 돌아갑니다. 않보이는 곳 복사하여 메모장에서 보니 정상적입니다. 문제의 화면입니다. -_- 무슨 이유인지는 모르겠지만 갑자기 토드의 폰트가 바뀌었습니다.해당 폰트에서는 한글이 먹히지 않는 폰트였구요.(쿼리 치다가 갑자기 바뀌어서 무슨일인가 했습니다.)토드에서 폰트를 변경하는 방법은 다음과 같습니다. 1) 메뉴바에서 View->Toad Options 로 들어갑니다.2) Editor -> Languages 부분의 Edit 로 들어갑니다. 3) Highlighting -> Custom font 로 들어갑니다. 4) 이제 원하는 폰트로 바꾸시면 됩니다. 이제 쿼리문의 한글도 정..