웹마스터 팁

뭐 별루 팁도 아니지만
이번에 이것땜에 고생을 많이 해서 혹시 모르는 님들도 있을까하는 노친네의 염려 ㅡ,.ㅡ;;
제가 하고 싶은 말은
mysql_fetch_row
mysql_fetch_array
mysql_fetch_object
첨 PHP를 시작할때 부터 저 나름대로 코드의 가독성, 디버깅의 편리성등의 이유료
mysql_fetch_array를 줄곳 써왔는데
요번에 어느 사이트를 제작하다 보니 실행속도의 문제등으로 코드, SQL 쿼리 를 정리하는 도중
요넘들의 속도차이를 테스트 하다보니 놀라운 점들이 많더라구요.
먼저 결론부터 말씀드리자면
mysql_fetch_array 가 가장 늦습니다.
mysql_fetch_assoc 가 그다음
그리고 mysql_fetch_object와 mysql_fetch_row는 비슷한데 mysql_fetch_row가 더 빠르구요
그런데 사실 mysql_fetch_array 와 mysql_fetch_row 는 많게는 2초 까지 차이가 나더군요.
--------------------------------------------------------------------------------------------------------SQL QUERY
SELECT
  sg.id, sg.pics, sg.mov_file, sg.sell_price, sg.buy_year, sg.sell_type, sg.color, sg.trm,
  sg.buy_month, sg.mileage, sg.zZim,sg.hit, sg.is_del,
  cm.vender, cm.k_class, cm.car_name, m.mem_post,m.mem_addr, m.mem_ID, cv.k_vender
FROM  car_vender AS cv USE INDEX (is_import, e_vender)
LEFT JOIN car_model cm USE INDEX (id, vender, e_class, car_type) ON (cv.e_vender = cm.vender)
LEFT JOIN sell_goods  AS sg USE INDEX (id, rel_id, rel_ref, is_del) ON (sg.rel_ref = cm.id)
LEFT JOIN member AS m USE INDEX (is_del, mem_ID_2) ON (sg.rel_id = m.mem_ID)
WHERE (sg.is_del <> 'y') AND (m.is_del <> 'y')
--------------------------------------------------------------------------------------------------------------------
여기에 약간의 where 조건이 추가 되지만 인덱스는 여러번의 테스트를 거쳐서 제대루 걸렸다고? ,ㅡ,.ㅡ;; 생각됩니다.
여기서 한가지 충고를 하고 싶은 말씀은 꼭 mysql_fetch_array를 쓰시려는 분들은 mysql_fetch_assoc 를 쓰라고 말씀드리고 싶습니다.
똑같은 방법으로 구현할 수 있는 방면에 속도는 훨씬 빠르더 군요....
다만 mysql_fetch_assoc는 $r[0]과 같은 형식은 사용할 수 없더군요. $r[0]의 형식을 쓰시려면 mysql_fetch_row를 쓰시면 되구요.
이상 좋은 팁이 되었으면 좋겠습니다.
그럼 좋은 하루 되세요^^&
참 데이터는 4만건 정도에서 테스트 되었습니다.