이전 포스트을 통해 아래와 같은 것을 했습니다. ● 스핑크스 설치● 환경설정 (sphinx.conf) ● 인덱싱 생성● 데몬 실행 ● sphinxQL 실행 이번에는 sphinxQL을 통해 쿼리를 날려보고 동작원리 및 유용한 쿼리를 연습하는 시간을 가져보려 합니다. 기본sphinxQL를 접속해주세요. ]$ mysql -h0 -P9306 ]$ mysql -h0 -P9306 Welcome to the MariaDB monitor. Commands end with ; or \g.Your MySQL connection id is 1Server version: 2.2.11-id64-release (95ae9a6) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab ..
본문전체적인 과정은 간단합니다. 복사테이블 생성 -> 복사테이블에 원본 테이블 데이터 복사 -> 테이블 이름 변경 순으로 진행됩니다. 그 사이에 짜잘한 내용들을 추가하였습니다.모든 내용은 정기점검 등으로 외부에서 DB 사용이 중지된때라는 가정하에 진행합니다. 소개드리는 방법이라 하더라도 40~50분정도의 시간이 필요합니다. 기존 테이블의 FK 삭제기존 테이블에 FK 제약조건이 있을 경우엔 바로 카피 테이블을 생성할수 없습니다. FK는 이름이 유니크해야하므로, 기존 테이블의 FK를 삭제해야만 진행할 수 있습니다.ALTER TABLE 테이블명 DROP FOREIGN KEY FK이름 FK 컬럼은 지우지 않습니다. 복사해야하므로.. 카피 테이블 생성기존 테이블에서 스키마가 변경된 테이블을 새로 만듭니다. (예를..
아래는 스핑크스 테스트할 사용 계획입니다. 1. mysql에는 zip_code라는 우편번호 테이블이 존재합니다.2. 스핑크스를 이용하여 zip_code의 text, varchar 컬럼을 인덱스 로드합니다. 인덱스 로드한 이름은 sph_zip_code로 명명합니다.3. sphinxQL 이용하여 쿼리 테스트를 합니다.4. sphinxSE 이용하여 zip_code와 sph_zip_code를 innser join 하여 통합검색 서비스를 합니다. 스핑크스의 다음 세 가지 액세스 방법 중 하나를 사용하여 검색데몬(searchd)에 액세스 할 수 있습니다. 1. sphinxQL방식 : 스핑크스 자체의 mysql 네트워크 프로토콜 구현2. sphinxSE 방식 : 플러그인 가능한 스토리지 엔진이 있는 서버를 사용(ex..
explain쿼리의 동작을 보여주는 키워드ex) explain select * from test; idselect의 구분번호 select가 구분되어 실행되면 id가 다를것이고 구분되어 실행되지않으면 id가 같다 select typeselect type에는 primary, union, simple, subquery 등이 있다simple은 아무것도없이 select만 사용할때 보여진다 ex) explain select now(); typetype에는 ALL, index, ref, const 등이 있다 ALL : FullScanref : 조인 수행시 매치되는 인덱스의 모든 행을 읽을경우const : 딱 하나의 행과 매치될경우index : index를 전체 스캔 extra쿼리 실행시 필요한 추가 정보를 제공성능 ..
union은 각 select의 결과를 합치는것으로 컬럼의 수가 동일해야 합칠수있다 select t1 from test1unionselect t2 from test2; union 과 union all이 있는데 union == union distinct 중복을 제거하며union all 중복을 제거하지않는다 속도를 생각한다면 union all이 더 나을수도있다 인덱스 최적화할려고 or조건을 제거하기위해 사용해봤는데 쿼리가 너무길어져서 가독성이 떨어지는 부분이 있지만 속도는 조금 빨라진거같다