* 참고사이트 : http://blog.naver.com/cles7948?Redirect=Log&logNo=80069118520
요즘 PHP 에러로그를 수정하다가, PHP가 버젼 업 하면서 나타내는 에러를 수정하다가
예를 들어 ereg를 preg로 써야된다는 등...과 같은 종류가 꾀 있어 알아보다가 잘 정리되있는 글 발견해서
다시한번 정리를 하고자한다. 참고한 사이트 링크는 위에있다
1. mysql 총 게시물 수 세기 (mysql_num_rows VS count)
//1번 $num_result1 = mysql_query("SELECT code FROM tablename"); $num_rows1 = mysql_num_rows($num_result); //VS //2번 $num_result2 = mysql_query("SELECT COUNT(code) as code FROM tablename"); $num_rows2 = mysql_fetch_array($num_result); $num_rows2 = $num_row[code];
위의 소스처럼 해놓고 게시물 10만일때 실행을 해보면
1번 : 2초 이상 VS 2번 : 0.2초 라고한다.
(추가 : 참고한 블로그에서 mysql_num_rows를 왜 만들었을까라며 궁금해하던데, 내생각엔 query문을 날릴때 COUNT만 필요한게 아니라 SELECT도 해와야하고 SELECT한 정보들의 count 값도 필요할땐 1번처럼 써야해서가 아닐까라고 생각한다. 나도 그래서 1번을 썼었고~)
2. mysql_fetch_row > mysql_fetch_array >>> mysql_result
- mysql_fetch_row는 불편하게 숫자로 칼럽을 불러와야 하고
mysql_fetch_array보다 약간 느리지만 문자 칼럼을 불러 올 수 있다는 차이점도 있다.
- 또 참고사항 ! 이글은 2009년 5월에 작성된 글이더라...
현재 내가 알기론 mysql_fetch_assoc함수 쓰는것을 권장하고 있다고 알고있다.
mysql_fetch_assoc은 문자 칼럼을 불러올수 있으니 빠르고, 문자칼럼을 사용할 수 있는 두 조건을 만족해서 그런거 같다!
3. HTML 출력 >> echo > print >> printf
- print와 printf는 복잡한 곳에 적격이고, 약간 느리다 VS echo는 단순한 곳에 적격이고 빠르다.
- printf는 형식화 된 출력을 해주므로 그래도 계속 쓰이는중
4. 인라인
- 아무리 PHP가 빠르다고 해도 HTML이 훨씬 더 빠르다. 변수가 많아 질수록 php파일은 느려지므로
소스코드 분리 측면에서는 다음과같이 사용하는 것이좋다. (1번은 좋은 예 / 2번은 안좋은 예)
- 1번
$text = "helloword!";
echo ("<table><tbody><tr><td>$text</td></tr></tbody></table>");
- 2번
$text = "helloword!";
<table><tbody><tr><td><?=$text;?></td></tr></tbody></table>
5. ereg_replace <<< preg_replace 정규 표현식
ereg_replace는 40개 정도 변환하는데 1초정도 걸리고 preg_replace는 0.3초 정도 걸린다고 한다.
6. foreach와 list 함수 속도 차이 : 35%차이
- foreach($string as $a); >>> while(list(,$a) = each($string));
7. explode VS split VS preg_split
- 위 세 함수는 문자열을 자르는 함수 로써 explode가 70%로 빠르다고 한다
8. mysql_connect VS mysql_pconnect
- 빠르기는 mysql_pconnect이 빠르다. 일정시간 동안 mysql을 열러 놓기 때문에 다시 열 필요가 없어서 빠르다고 한다
(persistant 메뉴얼에 영구적인이라고 되어있음)
- 하지만 서로 장단점이 있다. 단점으로는 계속 열기 때문에 메모리를 많이 잡아먹는다고 한다.
- 따라서 mysql_pconnect는 최소 1G이상 되어야 사용하시는 것이 좋다고 한다
9. 큰 따옴표(") << 작은 따옴표(')
- 큰따옴표는 PHP가 파싱을 한다. 하지만 작은 따옴표는 파싱하지 않으므로 작은 따옴표를 쓰는 것이 빠르다
ex)
echo 'test'.$text1.'!!!!!!'; // 이런식으로....
10. mysql 데이터 저장 공간 크기?
- id int(11) unsigned NOT NULL auto_increment,
bbs smallint(5) ) unsigned NOT NULL,
lens mediumint(8) ) unsigned NOT NULL...
- 위와 같이 int 종류만해도 여러가지이다. 따라서 각각 크기에 맞게 사용하는 것이 좋으며
NOT NULL이라고 해주면 속도가 빨라진다고 한다.
11. WHERE절에 모든 것은 인덱스를 건다
- mysql에서 쿼리시에 WHERE절에 사용되는 비교의 칼럼은 반드시 인덱스를 걸자. 인덱스가 게시판 속도를 빠르게 해준다고 한다.
그외 설명은 참고사이트를 보도록 하자 ^^ 끝-