Skip to content

18.06.28

chy edited this page Jul 31, 2018 · 2 revisions
[MySQL] Derived table in join queries
#1
select *
from
	A join B 
	on A.id = B.id and A.age > 10;

#2
select *
from
	(select * from A where A.age > 10) join B 
	on A.id = B.id

2번과 같이 join시 inner쿼리를 사용하는 경우 derived table을 생성하고 이는 성능을 저하시킨다

[MySQL] innodb_buffer_pool_size

innodb_buffer_pool_size = 2G my.ini 또는 my.cnf에 설정

mysql --help --verbose
# Default options are read from the following files in the given order 에서 위치 확인

innodb 설정 관련

[MySQL] where절의 date사용
#1
/* Duration  / Fetch 
   0.016 sec / 3.375 sec */
SELECT *
FROM 
	customer_event A 
	JOIN customer B ON A.meter_no = B.meter_no
	JOIN meter_log C ON A.meter_no = C.meterNumber AND A.event_time = C.MeteringTime 
WHERE event_type = 5 AND (DATE(event_time) BETWEEN '2018-03-01' AND '2018-03-31')

#2
/* Duration  / Fetch 
   0.016 sec / 0.156 sec */
SELECT *
FROM 
	customer_event A 
	JOIN customer B ON A.meter_no = B.meter_no
	JOIN meter_log C ON A.meter_no = C.meterNumber AND A.event_time = C.MeteringTime 
WHERE event_type = 5 AND (event_time BETWEEN '2018-03-01' AND '2018-03-31')

event_timedatetime 타입을 가진 컬럼이다.

WHERE절에 Date() 하나 있고 없고 차이에, fetch time이 저정도나 차이가 난다. Date()를 이용해도 index를 타기에 괜찮을 줄 알았지만 아니였다.

[Js] script의 위치

html parser가 script를 마주치면, script가 다운로드 될 때 까지 dom 로딩이 중지됨

<script type="text/javascript" src="path/to/script1.js" async></script>
<script type="text/javascript" src="path/to/script1.js" defer></script>

async : 비동기적으로 다운로드 후 실행

defer : 비동기적으로 다운로드 후 DOM이 로드된후 순서대로 실행

<body> 끝에서 사용하기 보다, <head>에서 async 또는 defer과 사용하는 것이 좋다.

link1 link2

Clone this wiki locally