반응형

Database 33

MySQL 속도 측정을 위한 SQL_NO_CACHE

설명 MySQL 5.3 버전의 GUI에서 실행된 쿼리가 캐싱되어 다음에 다시 실행할때 실행 속도가 줄어 정확한 속도 측정이 되지 않을때 SQL_NO_CACHE를 사용하면 실행할 때마다 캐싱 되지 않은 속도를 확인할 수 있다. 쿼리 캐시는 5.7.2 부터 사용되지 않으며, 8.0에선 제거되었기 때문에 다른 방법이 필요할 수 있다. 사용법 SELECT SQL_NO_CACHE * FROM `TABLE_NAME`; SELECT SQL_NO_CACHE `col_name` FROM `TABLE_NAME`; 기본 문법은 위와 같다.

Database/MySQL 2021.09.08

mysql strip_tags function / html 제거 후 검색

게시판의 내용 검색시 HTML 태그가 같이 검색되어, 사용자가 원하는 값을 정확하게 찾지 못하는 것을 방지 하기위해 아래와 같이 MySQL 사용자 함수를 등록해주고, CREATE FUNCTION `strip_tags`(s TEXT) RETURNS text CHARSET utf8 NO SQL BEGIN DECLARE start,end INT DEFAULT 1; LOOP SET start = LOCATE("", s, start); IF (!end) THEN SET end = start; END IF; SET s = INSERT(s, start, end - start + 1, ""); END LOOP; END 검색 시 아래와 같이 등록한 MySQL 함수를 이용한다. SELECT * FROM board WHER..

Database/MySQL 2020.10.20

DB ERD 관계선(실선, 점선)과 기호에 대한 설명

DBA는 아니지만, 프로그램을 잘 만들기 위해서 완성된 ERD를 이해하고, 나아가 간단한 모델링은 직접 만들줄 알야한다고 생각한다. ERD를 이해하기 위한 첫 걸음이자 가장 중요하다 할 수있는 부분이 관계선과 관계선에 사용되는 기호라고 할 수 있다. 들어가기 앞서 관계선과 기호의 종류에대해 알아보자 관계선의 종류 실선(Identifying): 식별관계 부모테이블의 PK가 자식테이블의 FK/PK가 되는 경우 부모가 있어야 자식이 생기는 경우 점선(Non-Identifying): 비식별관계 부모테이블의 PK가 자식테이블의 일반속성이 되는 경우 부모가 없어도 자식이 생기는 경우 기호의 종류(도형 혹은 식별자) |: 1개 / 실선은(dash) ‘1'을 나타낸다. ∈: 여러개 / 까마귀 발(crow’s foot ..

Database 2019.01.02

MySQL 변수값 IN() 검색? FIND_IN_SET() 함수 이용

보통 아래와 같이 한개 필드에 여러 값을 검색할 경우 IN() 함수를 이용하여 검색한다. -- sample1 SELECT * FROM tbl1 WHERE tbl1_idx IN(1,2) 아래와 같이 IN()들어가는 값이 사용자가 입력한것이 아닌 다른 테이블에서의 값을 이용해서 검색 하는 것이라면? -- sample2 SELECT * ,@rows_idx := (SELECT GROUP_CONCAT(tbl2_idx) FROM tbl2) -- return value: '1,2' FROM tbl1 where tbl1_idx IN(@rows_idx) 위 쿼리는 얼핏보면 정상적인 결과 값이 표현되는 것 같지만 전혀 그렇지 않다.왜일까? sample1에서 검색하는 것은 "tbl1_idx IN(1,2)" 이고, sampl..

Database/MySQL 2018.12.31

MySQL EXPLAIN 사용하여 Query 퍼포먼스 확인.

EXPLAIN 을 사용하여 인덱스가 적절히 사용되고 있는지, 결과 값을 가지고 오기 위해 어떤 작업을 수행하는지 대략적으로 알 수 있다. EXPLAIN 은 SELECT문에 사용된 각 테이블당 하나의 행을 리턴한다. 나열된 순서는 MySQL이 쿼리 처리에 사용하는 순서대로 출력된다. MySQL은 모든 조인을 single-sweep multi-join 방식을 사용하여 처리하는데, 이것은 MySQL이 첫번째 테이블에서 한 행을 읽고, 두번째 테이블에서 매치되는 행을 찾고, 세번째 테이블에서 매치되는 행을 찾는 방식이다.모든 테이블들이 처리된 후 추출된 컬럼을 출력하고 다시 처음 테이블로 돌아가서 조인을 계속한다. 이런식으로 첫번째 테이블에 더이상 남는 행이 없을때까지 실행한다. STARTGHT_JOIN을 명시..

Database/MySQL 2016.09.13

group_concat 다중 레코드를 한개 컬럼으로 출력.

자꾸 잊어 버려서 기록 합니다. MySQL에서 Select시 멀티 레코드를 한개 컬럼으로 표현하는 방법입니다. 한개 컬럼으로 묶어서 쓰는건 concat()함수와 비슷합니다만, concat()함수는 단일 레코드에서 여러개의 컬럼을 묶어서 쓰는 것이고, group_concat()함수는 여러 래코드의 컬럼을 묶어 쓸때 사용합니다. Sample table : book_mast book_id book_name isbn_no cate_id aut_id pub_id dt_of_pub pub_lang no_page book_price BK001 Introduction to Electrodynamics 0000979001 CA001 AUT001 P003 2001-05-08 English 201 85.00 BK002 Un..

Database/MySQL 2013.07.15

MS-SQL] sp_attach_db 저장 프로시저 이용하여 mdf, ldf 파일 복구

sp_attach_db 저장 프로시저를 이용해서 ms-sql에 복원하는 방법입니다. 데이터베이스명: partoffermdf, ldf 파일 위치: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\(파일의 위치는 ms-sql의 데이터 폴더입니다 초기 설치 방법에따라 위의 경로는 바뀔 수 있습니다.mdf 파일명: partoffer.mdfldf 파일명: partoffer_1.ldf 우선 사용자나, 데이터베이스를 생성하지 않고, mdf파일과 ldf파일을 위의 경로에 위치하게 한후 아래의 쿼리를 실행하면 데이터베이스가 자동으로 만들어지게 됩니다. EXEC sp_attach_db @dbname = N'partoffer' , @filename1 = N'C:\Prog..

Database/MS-SQL 2013.04.03

MySQL 패스워드 분실시 대안 방법.

간혹 서버를 인계받다보면 mysql의 root 패스워드가 상실된 상태에서 인계를 받기도 합니다. 그럴 때 요청을 하여 패스워드를 알 수 있으면 정말 좋겠으나 뜻대로 되지 않는 경우가 허다하죠 ^^; 우선 서버에 원격 접근이 가능 하다는 전제하의 방법입니다. Window 플랫폼. 시작 > 실행 > services.msc 입력 후 확인. 서비스에서 mysql 부분을 중지합니다. (혹은 작업 관리자에서 mysql 관련 프로세스를 종료합니다.) 시작 > 실행 > cmd 입력 후 확인 (커맨드 입력창을 엽니다.) MySQL의 설치 디렉토리의 열린 커맨드창(ms-dos창)에서 bin까지 이동합니다. (예: cd C:\Program Files\MySQL\bin) mysqld.exe --skip-grant (입력 후 ..

Database 2013.02.26
반응형