[SQL] MySQL은 "선택은 MAX_JOIN_SIZE 행보다 더 많은 검토 것"
SQLMySQL은 "선택은 MAX_JOIN_SIZE 행보다 더 많은 검토 것"
나는 PHP와 MySQL을 사용하고 있습니다. 내 프로그램에서 조인 포함하는 선택 쿼리가있다. 내가 그것을 실행하면 로컬 호스트에서이 벌금을 일하고 있지만 때 나는 내 서버에 업로드하고 다음 오류가 발생하는 경우 다음을 실행하려고 :
선택은 MAX_JOIN_SIZE 행 이상을 검사 할; 확인 당신의 SQL_BIG_SELECTS가 SELECT 괜찮 = 1 SET SQL_MAX_JOIN_SIZE = # 경우 사용 SET
나는이 문제를 어떻게 해결할 수 있습니다?
해결법
-
==============================
1.PHP를 사용하는 경우, SQL_BIG_SELECTS = 1 주 쿼리 전에 별도의 쿼리에서 설정해야합니다. 예를 들면 :
PHP를 사용하는 경우, SQL_BIG_SELECTS = 1 주 쿼리 전에 별도의 쿼리에서 설정해야합니다. 예를 들면 :
$mysqli = new mysqli("localhost", "root", "password", "db"); $mysqli->query("SET SQL_BIG_SELECTS=1"); //Set it before your main query $results = $mysqli->query("SELECT a, b, c FROM test"); while($row = $results->fetch_assoc()){ echo '<pre>'; print_r ($row); echo '</pre>'; }
-
==============================
2.이전 당신의 선택을 실행하는 쿼리로 실행 해보십시오 :
이전 당신의 선택을 실행하는 쿼리로 실행 해보십시오 :
SET SQL_BIG_SELECTS=1
이건 정말 큰 데이터 세트를 통해 실행되어 있습니까? 이것은 다른 방법으로 해결해야하는지 없습니다.
-
==============================
3.매개 변수의 효과는 http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_join_size에 설명되어 있습니다.
매개 변수의 효과는 http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_join_size에 설명되어 있습니다.
(쿼리의 각 부분에 관여 적은 기록이 그래서) 당신은 더 엄격하게 참여 레코드를 필터링합니다. 간단한 절과 가장 기록을 필터링 할 수있는 테이블 수 시작합니다.
-
==============================
4.저도 같은 문제로 실행했습니다. 놀랄 그래서 그것의 드루팔 사이트가 이상 떨어졌다.
저도 같은 문제로 실행했습니다. 놀랄 그래서 그것의 드루팔 사이트가 이상 떨어졌다.
그것은 오래 된 스타일의 쿼리, 표 1, 표 2에서 예를 선택 ㅋ, 표 3 곳 table1.id = table2.id 그리고 table2.some = '일'이었다
@VolkerK 말한다 같이, 용액이 이동할 어디에 표 2에 표 1과 일치하는 그 전에 여과하여 표 2의 결과 (효과적으로는 절 가입)을 따라서, 표 1에 표 2에서 일치시킬 필요가 기록의 양을 감소시키는 것을 절.
-
==============================
5.나를 위해 솔루션은이 일치시키는 데 사용 조인 모든 컬럼에 인덱스 키를 추가하는 것이 었습니다.
나를 위해 솔루션은이 일치시키는 데 사용 조인 모든 컬럼에 인덱스 키를 추가하는 것이 었습니다.
-
==============================
6.당신이 PDO 드라이버를 사용하는 경우 새 데이터베이스 핸들을 구성 할 때, 당신의 driver_options 배열의 PDO :: MYSQL_ATTR_INIT_COMMAND 설정
당신이 PDO 드라이버를 사용하는 경우 새 데이터베이스 핸들을 구성 할 때, 당신의 driver_options 배열의 PDO :: MYSQL_ATTR_INIT_COMMAND 설정
그래서 같은 :
$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET SESSION SQL_BIG_SELECTS=1'));
from https://stackoverflow.com/questions/943423/mysql-the-select-would-examine-more-than-max-join-size-rows by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] LINQ에 SQL 순위 () 변환, 또는 대체 (0) | 2020.07.07 |
---|---|
[SQL] 사용 *에 베스트 MySQL의 필드를 많이 호출 할 때? [복제] (0) | 2020.07.07 |
[SQL] 2008 SQL에 원자 MERGE 문인가? (0) | 2020.07.07 |
[SQL] SQL Server 관리 Studio에서 IntelliSense를 분실 (0) | 2020.07.07 |
[SQL] SQL에서 조건을 실행하기 위해 '어디에'조항 (0) | 2020.07.07 |