2009-03-04 3 views
0

방금 ​​전에 LIMIT 조건을 삭제하여 이전에 실행 한 쿼리의 전체 결과 크기를 얻는 데 도움이되는 mysql의 SQL_CALC_FOUND_ROWS 및 FOUND_ROWS()에 대해 읽었습니다. 이제 기존 웹 응용 프로그램에서이 기능을 사용하고 싶습니다. SQL_CALC_FOUND_ROWS 및 FOUND_ROWS()를 기존 웹 응용 프로그램에 통합하는 방법

내가 마음에 몇 가지 방법을 가지고,하지만 난 가장 적합한 확실하지 않다 :

1) PHP는 이미 FOUND_ROWS() 기능을 사용하는 함수가 있습니까? 나는 innodb 스토리지 엔진과 함께 mysqli와 mysql 5와 함께 PHP 5를 사용하고있다.

2) 이미 구축 한 응용 프로그램에는 mysqli 라이브러리를 래핑하는 자체 데이터 액세스 객체가 있습니다. 자주 사용되는 CRUD 쿼리를 생성합니다. 모든 SELECT 쿼리에 SQL_CALC_FOUND_ROWS를 포함하도록이 개체를 편집해야합니까? 어떤 합병증이있을 수 있습니까?

다른 의견이나 제안이 있으십니까?

답변

2

1) PHP에는 이미 FOUND_ROWS() 기능을 사용하는 기능이 있습니까? 나는 innodb 스토리지 엔진과 함께 mysqli와 mysql 5와 함께 PHP 5를 사용하고있다.

나는 mysql_num_rows으로 생각했지만 조금 브라우징 한 후에 나는 틀렸다고 생각합니다.

는 UPDATE : 예, 나는

2) 응용 프로그램 난 건물은 이미 그것은 mysqli 라이브러리를 래핑 자신의 데이터 액세스 객체의 한거야 :) 틀렸다. 일반적으로 사용되는 CRUD 쿼리를 생성합니다. SELECT 개의 검색어에 SQL_CALC_FOUND_ROWS을 포함하도록이 개체를 편집해야합니까? 어떤 합병증이있을 수 있습니까?

SQL_CALC_FOUND_ROWS 쿼리에 LIMIT 절이없는 경우 반환되는 행 수를 계산합니다.

이 하나의 메타 데이터를 활용하고 하나의 경우 것입니다 :

  1. 테이블이 MyISAM 엔진을 사용
    • 쿼리가 더 WHERE 조항이 없습니다. 다른 경우에 SQL_CALC_FOUND_ROWS

성능에 영향을 미치는, 행을 하나씩 계산한다.

각 쿼리에 추가하지 마십시오.

+0

@Quassnoi : MyISAM (또는 InnoDB) +'SQL_CALC_FOUND_ROWS'과 관련하여 아무 것도 찾을 수 없습니다. InnoDB가 하나씩 행을 계산합니까? –

+0

@Alix : 예, 있습니다. – Quassnoi

+0

감사합니다. 더 자세히 알 수 있도록 링크가 있습니까? –

1

1) 아니요. php에는 이와 같은 기능이 없습니다.

2.) 정말 필요할 때만 SQL_CALC_FOUND_ROWS를 사용하는 것이 좋습니다.

관련 문제