개발중/MYSQL35 MY SQL 테이블 복사 / 데이터 복사 MY SQL 에서 테이블 데이터를 함부로 건들이면 안되는 경우가 있다. 그럴 경우에는 Second Table 을 생성해서 관리하는데 CEATE 기존 테이블 구조를 그대로 복사한다 CREATE TABLE BBB like AAA INSERT 기존 테이블 데이터를 그대로 복사한다 방법 1 INSERT INTO AAA SELECT * FROM BBB; 방법 2 INSERT INTO AA ( A1 , A2) SELECT , A1 , A2 FROM BB; 개발중/MYSQL 2021. 5. 12. MY SQL 액셀 문서 INSERT 액셀에 엄청나게 많은 데이터가 있는데 이거를 DB TABLE 에 집어넣어야 하는 상황에 "아 이걸 INSERT 다 해야하나" 라고 막막해져있는 나는 또 멍청한 짓을 반복할 뻔했다. 다영선배 덕분에 2초만에 해결 ( ̄︶ ̄)↗ 개발중/MYSQL 2021. 5. 3. MYSQL 세로 통계를 가로 통계로 내고 싶을 때 내가 놓인 상황은 통계를 내는 과정에서 행으로 각 합을 뽑아야 하는 경우였다. 아래 함수를 이용해서 해결했다. ORACLE 은 DECODE 로 하는데 MYSQL 은 아래처럼 대체 한다. SELECT user_seq, MAX(IF(action_seq = 1,CNT , 0)) AS CNT1, MAX(IF(action_seq = 2,CNT, 0) )AS CNT2, MAX(IF(action_seq = 3,CNT, 0) )AS CNT3, MAX(IF(action_seq = 4,CNT , 0)) AS CNT4 FROM ( SELECT user_seq AS user_seq , action_seq AS action_seq , COUNT(action_seq) AS CNT FROM ACTION_LOG_3 WHERE use.. 개발중/MYSQL 2021. 4. 28. LIMIT 페이징 성능 향상 LIMIT 으로 범위를 지정해서 DATA를 가지고 오는데 성능이 떨어지는 느낌을 받았다 만건을 가지고 올 때도 성능이 저하 되는데 십만건을 가지고 오면 최악일 것이라는 생각이 들었고 변경하는 방법을 찾아보았다. 지금까지 페이징은 아래처럼 했으나 SELECT demon_seq, i_title, i_content FROM TEST.DEMON_DATA LIMIT 0, 100; 성능 향상을 위해 다른 방법을 이용했다. SELECT demon_seq, i_title, i_content FROM TEST.DEMON_DATA WHERE demon_seq > 200 ORDER BY demon_seq LIMIT 10; 이렇게 사용했을 경우에 LIMIT 200, 10 과 같은 역활을 한다. 장점은 where 절에서 범위에.. 개발중/MYSQL 2021. 2. 26. HINT HINT 란 ? SQL 튜닝의 핵심 부분으로 일종의 지시 구문이라고 한다. 즉, 오라클 옵티마이저에게 SQL 문 실행을 위한 데이터를 스캐닝하는 경로, 조인하는 방법 등을 알려주기 위해 SQL사용자가 SQL 구문에 작성하는 것을 뜻한다. " 오라클이 항상 최적의 실행 경로를 만들어 내기는 불가능하기 때문에 직접 최적의 실행 경로를 작성해주는 것이다 " 라는 정의가 가장 바른 것 같다. 단, 힌트, 인덱스, 조인의 개념을 정확히 알고 사용하지 않은 무분별한 힌트의 사용은 성능의 저하를 초래한다. 그러기에 잘 알고 최적의 실행 경로를 알고 있을 경우에 사용해야 한다! 힌트의 쓰임새 1. 액세스 경로 2. 조인 순서 3. 병렬 및 직렬 처리 4. Optimizer의 목표를 변경 가능 5. 데이터 값을 정렬해야.. 개발중/MYSQL 2020. 10. 27. PLAN PLAN ? ( EXPLAIN PLAN ) - SQL 문의 액세스 경로를 확인하고 튜닝할 수 있도록 SQL문을 분석, 해석하며 실핼 계획을 수립한 뒤 PLAN_TABLE 에 저장하는 명령어이다. 사용법 EXPLAIN PLAN FOR SELECT * FROM TABLE_NAME; 이 명령어를 사용하면 Plan 이 생성된다. EXPLAIN PLAN FOR SELECT * FROM GUEST; 이런식으로 실행 계획을 저장한다. SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY('plan_table',NULL,'serial')); 이런 결과가 나온다. 저 뒤에 있는 serial은 뭘까 싶어서 한글자 틀리게 써봤더니 에러가 떨어진다. 정의되어있는 예약어 인거 같다... 개발중/MYSQL 2020. 10. 27. SQL문 튜닝 WHERE 조건에 모두 명시하였더라고 LIKE와 같은 연산자를 사용하면 인덱스 효울이 떨어진다. IS NULL, NOT NULL. NOT IN 등도 마찬가지 이다 ( '=' 권장 ) 인텍스 컬럼은 변형하여 사용하지 않는다. OR 보다는 AND를 사용할 것 그룹핑 쿼리를 HAVING 보다는 WHERE 절에서 필터링 할 것 DISTINCT는 가급적 사용하지 않는다. IN, NOT IN 대신에 EXISTS 를 사용할 것. I/O 튜닝이 곧 SQL 튜닝이다. I/O 작업이 일어나는 동안, 프로세스는 잠을 자기 때문이다. 즉, SQL 속도를 높이기 위해서는 I/O 시간을 줄여야 한다. 개발중/MYSQL 2020. 10. 27. INDEX 정리 인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료의 구조를 일컫는다. 인덱스는 테이블 내의 1개의 컬럼 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작뿐만 아니라 레코드의 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다. 인데스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다. 왜냐하면 보통 인덱스는 키-필드만 가지고 있고, 테이블의 세부항목들은 갖고 있지 않기 때문이다. 인덱스는 고유 제약 조건을 실현하기 위해서도 사용 된다. 고유 인덱스는 중복된 항목이 등록되는 것을 금지하기 때문에 인덱스의 대상인 테이블에서 고유성이 보장된다. - 클러스터 다중 데이터베이스와 다중 테이블이 조인될 때, 그것을 클러.. 개발중/MYSQL 2020. 10. 27. ANSI 정리 ANSI ( American National Standards Institute ) / 미국표준협회 각 나라별 표준협회 일본규격협회(JIS) 미국표준협회(ANSI) 한국표준협회(KS) 유럽(DIN) 여러 데이터베이스들의 SQL들이 제공해주는 특성에 따라 SQL이 다를 수 있다. 하지만 ANSI 표준으로 작성된 SQL은 모든 데이터베이스에서 호환된다. Oracle ANSI SELECT a.ename ,b.ename FROM scott.emp a, scott.emp b WHERE a.mgr = b.empno SELECT a.ename ,b.ename FROM scott.emp a JOIN scott.emp b ON a.mgr = b.empno ANSI 를 배우지 않는 이유 기본적인 데이터 조회구문은 ANSI.. 개발중/MYSQL 2020. 10. 27. SQL 최대값 구하기 처음 시작해본 알고리즘 퀘스트 도전 쉽지 않겠지만 틈틈히 한문제씩 꾸준히,, 👍 너무 어렵게 생각해서 빙빙 돌아서 생각을 해봤는데 의외로 간단한 방법이 답이었다니 그래도 정답 맞춰서 행복해 🏰🎡🏖 개발중/MYSQL 2020. 7. 27. ALTER TYPE 변경 CREATE TABLE information ( name VARCHAR2(15), hobby VARCHAR2(15), age NUMBER (8), job VARCHAR2(15) ); SELECT * FROM information; ALTER TABLE information MODIFY age VARCHAR2(15); DESC information; SQL에서 Table을 생성 했는데 type을 바꿔주고 싶을 때! 개발중/MYSQL 2020. 7. 24. 이전 1 2 3 다음