전체보기
-
Real MySQL [6-4] 실행계획 - possible_keys, key, key_len, ref, rows, extra 칼럼MySQL 2016. 12. 8. 23:46
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. 이전 포스팅 ( Real MySQL [3] 실행계획 - type 칼럼 ) 에서 계속... possible_keys 옵티마이저는 쿼리를 처리하기위해 여러가지 처리 방법을 고려해 비용이 가장 낮을 것으로 예상되는 실행 계획을 선택해 쿼리를 실행한다. possible_keys 칼럼에 내용은 옵티마이저가 최적의 실행계획을 만들기 위해 후보로 선정했던 인덱스 목록이다. 이 컬럼은 무시해도 좋다. key Key 칼럼에 표시되는 인덱스는 최종 선택되어 실행 계획에 사용된 인덱스를 의미한다. 쿼리 튜닝시 Key 칼럼에 의도했던 인덱스가 표시되는지 확..
-
Real MySQL [6-3] 실행계획 - type 칼럼MySQL 2016. 12. 8. 22:40
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. 이전 포스팅 ( Real MySQL [2] 실행계획 - table, type 칼럼 ) 에서 계속... fulltext fulltext는 MySQL 전문 검색(Fulltext) 인덱스를 사용해 레코드를 읽는 접근 방법을 의미한다. 전문 검색 인덱스는 통계 정보가 관리되지 않으며, 전혀 다른 SQL을 사용해야 한다. 그래서 MySQL 옵티마이저는 전문 인덱스를 사용할수 있는 SQL에서는 쿼리의 비용과는 관계없이 거의 매번 fulltext 접근 방법을 사용한다. MySQL 전문 검색 조건은 우선순위가 상당히 높다. 전문 검색은 "MATCH ..
-
Real MySQL [6-2] 실행계획 - table, type 칼럼MySQL 2016. 12. 8. 21:37
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. 이전 포스팅 ( Real MySQL [1] 실행계획 - id, select_type 칼럼) 에서 계속... table 칼럼 MySQL의 실행 계획은 단위 SELECT 쿼리 기준이 아니라 테이블 기준으로 표시된다. 아래와 같이 별도의 테이블을 사용하지 않는 SELECT 쿼리의 경우에는 table 이 null로 표시된다. EXPLAIN SELECT NOW(); EXPLAIN SELECT NOW() FROM DUAL; 일부 DBMS에서는 SELECT문장이 반드시 FROM 절을 가져야 하는 제약이 있어 이를 위해 'DUAL'이라는 스칼라(칼럼..
-
Effective JavaScript [14] - 기명 함수 표현식의 스코프Javascript 2016. 12. 8. 20:01
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - Error 객체와 디버거에서 스택 추적을 개선하기 위해 기명 함수 표현식을 사용하라.- ES3과 버그가 있는 자바스크립트 실행 환경에서 함수 표현식이 스코프를 Object.prototype으로 오염시킨다는 점을 주의하라. - 버그가 있는 자바스크립트 실행 환경에서 기명 함수 표현식의 호이스팅과 중복 할당을 주의하라.- 기명 함수 표현식의 사용을 자제하고, 배포하기 전에 제거하라.- ES5를 제대로 구현한 실행 환경에 배포한다면, 걱정할 필요가 없다. 자바스크립트 함수는 문맥에 따라 의미가 달라진다. function double(x) { return x * ..
-
MySQL IN 구문 사용법MySQL 2016. 12. 8. 00:30
WHERE 절에서 IN 구문에 대한 사용법을 알아보자. 1) WHERE 일치하기 원하는 컬럼명 IN (조건1, 조건2, 조건3 ...) - WHERE 뒤에 써준 컬럼과 IN 뒤로 나열한 조건들 중 일치하는 row를 가져오게 된다. 여기서 나열한 조건들은 OR 조건으로 검색하게 된다. 2) WHERE 일치하지 않길 원하는 컬럼명 NOT IN (조건1, 조건2, 조건3, ...) - 일치하지 않길 원하는 컬럼명을 뒤에 NOT IN 을 기재하고 조건을 입력하면 조건을 제외한 내용을 가져오게 된다. 조건은 OR 조건으로 검색하게 된다. 3) WHERE 일치하기 원하는 컬럼명 IN (조건) - 다중조건이 아닌 하나의 조건만을 조회한다. IN뒤에 SubQuery의 내용을 사용하면 보다 더 다양하게 사용할 수 있다...
-
바인딩과 할당카테고리 없음 2016. 12. 7. 22:26
바인딩 일반적인 의미에서, 속성과 개체 사이 또는 연산과 기호 사이와 같은 연관(Association) 이다. 바인딩이 일어나는 시간을 바인딩 시간이라고 부른다. 바인딩과 바인딩 시간은 프로그래밍 언어 의미론에서 매우 중요한 개념이다. 바인딩은 언어 설계 시간, 언어 구현시간, 컴파일 시간, 링크 시간, 적재 시간, 또는 실행 시간에 일어날 수 있다. 이름을 속성에 연관(bind)시키는 과정이 바인딩이다. 아래의 C 코드를 보자 int count; count = count + 5; 위 코드에 대해 고려할 수 있는 바인딩과 바인딩 시간은 다음과 같다. - count에 대한 가능한 타입은 언어 설계 시간에 바인딩 된다 ex) int, long, float 등등 - count의 타입은 컴팡리 시간에 바인딩 된..
-
Effective JavaScript [13] - 즉시 실행함수 스코프Javascript 2016. 12. 7. 21:28
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 바인딩과 할당의 차이점을 이해하라. - 클로저는 외부 변수의 값이 아닌 참조를 저장한다. - 지역 스코프를 만들기 위해 즉시 실행 함수 표현식을 사용하라. - IIFE에서 블록으로 감쌌을 때 변화하는 상황에 주의하라. (버그가 있는!) 프로그램은 어떤 계산을 할까? function wrapElements(a) { var result = [ ], i, n; for ( i = 0, n = a.length; i < n; i++ ) { result[i] = function() { return a[i]; }; } return result; } var wrapped ..
-
Effective JavaScript [12] - 변수 호이스팅Javascript 2016. 12. 6. 23:55
본 게시물은 Effective Javascript의 내용을 재구성하여 작성되었음을 알립니다. 저작권 문제 발생시 게시물이 비공개 될 수 있습니다. - 블록 내에서의 변수 선언은 암묵적으로 그 변수를 포함하는 함수의 맨 윗부분으로 호이스팅된다. - 변수의 재선언은 하나의 변수처럼 처리된다. - 혼란을 막기 위해 지역 변수 선언을 직접 호이스팅하는 것을 고려하라. 자바스크립트는 어휘적 스코프를 지원하지만, 블록 단위 스코프를 지원하지 않는다. 변수 정의는 자신을 포함한 함수에 의해 지정된다. function isWinner(player, others) { var highest = 0; for (var i = 0, n = others.length; i < n; i++ ) { var player = others..