TIP게시판

제목 now() 와 sysdate()의 차이
글쓴이 kaido 작성시각 2019/01/07 11:50:01
댓글 : 4 추천 : 1 스크랩 : 0 조회수 : 9091   RSS

부제 now() 를 사용 하라!

날짜 조회 관련 찾아보다가 신기해서 건져 올려봅니다 ㅎㅎ

 

 

mysql> explain select * from user where regdt>now();

+----+-------------+-------+-------+----------+---------+------+------+

| id | select_type | table | type  | key      | key_len | ref  | rows |

+----+-------------+-------+-------+----------+---------+------+------+

|  1 | SIMPLE      | user  | range | ix_regdt | 8       | NULL |    1 |

+----+-------------+-------+-------+----------+---------+------+------+

1 row in set (0.00 sec)

mysql> explain select * from user where regdt>sysdate();   

+----+-------------+-------+------+------+---------+------+------+

| id | select_type | table | type | key  | key_len | ref  | rows |

+----+-------------+-------+------+------+---------+------+------+

|  1 | SIMPLE      | user  | ALL  | NULL | NULL    | NULL | 4822 |

+----+-------------+-------+------+------+---------+------+------+

 

sysdate()를 사용하면 꼭 풀 스캔 형태로 검색을 한다는 놀라운 현상.

 

해결법.

  • SYSDATE()의 사용 금지
  • 또는 --sysdate-is-now 옵션을 설정하여 MySQL Server 기동

--sysdate-is-now 옵션이 활성화되면, SYSDATE()는 NOW() 함수와 동일하게 작동.

 

 다음글 테스트 결과를 보다 깔끔하게 보는 방법 (1)
 이전글 $_SERVER['PHP_SELF'] 취약점 (1)

댓글

한대승(불의회상) / 2019/01/07 12:13:29 / 추천 1
좋은 정보 감사~
홍구2 / 2019/01/11 09:18:26 / 추천 0
유용한 정보 감사합니다.
RedoUndo / 2019/01/11 13:51:21 / 추천 0

신기하네요

 

가리비 / 2019/04/01 12:25:14 / 추천 0
now 만 썼었는데 다행입니다 ㅋㅋ