목록etc/SQL (17)
Note
SELECT * FROM 테이블 WHERE MATCH(column) AGAINST('키워드 1' in boolean mode) UNION SELECT * FROM 테이블 WHERE MATCH(column) AGAINST('키워드 2' in boolean mode); 중복없이 결과를 제공
# FULLTEXT index ALTER TABLE 테이블 ADD FULLTEXT INDEX INDEX 이름 (column) VISIBLE; # FULLTEXT index with ngram ALTER TABLE 테이블 ADD FULLTEXT INDEX INDEX 이름 (column) VISIBLE WITH PARSER NGRAM;
UPDATE 테이블명 SET 바꿀 칼럼명 = IFNULL(칼럼명, 바꿀 이름);
SELECT * FROM 테이블 WHERE 칼럼명 BETWEEN a and b; # a : 시작 날짜 혹은 숫자 # b : 끝 날짜 혹은 숫자
데이터베이스에서 작업을 하다보면 종종 쿼리가 실행이 안되고 대기 중일때가 있다. 이 상황이 발생하면 show processlist 를 실행하면 작업 중인 목록이 나온다. 이 때, Wating for table metadata lock 를 마주할 수 있다. 기본적으로 kill (id number) 를 실행 후 재실행 하면 해결이 된다. 하지만, 예를 들어 매일 자동화하는 작업이 있는데 그 작업이 완료 처리가 되지 않아서 실행되지 않는거라면 종료될 때까지 기다려야 하는데, 따로 설정을 해주지 않으면 작업 대기 시간이 꽤 길다. SELECT* FROM information_schema.INNODB_TRX 을 사용하면 현재 진행중인 테이블과 해당 id number가 나온다. 이를 kill 해주고 원래 실행하려던..