Tôi đang đặt câu hỏi này thay mặt cho một nhóm nhỏ người dùng của tôi có vấn đề này.Lỗi MySQL MAX_JOIN_SIZE
Một khi kịch bản họ đang sử dụng được cho ID 21, nó tạo ra các lỗi sau:
The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
Tôi đã nghiên cứu này càng nhiều càng tốt và tìm thấy một cái gì đó của một câu trả lời: http://dev.mysql.com/doc/refman/5.0/en/set-option.html
Các vấn đề là họ đang trên chia sẻ lưu trữ để họ không thể thay đổi cài đặt MySQL của họ để sửa chữa các lỗi.
Có bất kỳ điều gì tôi có thể viết vào tập lệnh của mình để chúng không có vấn đề này không?
Đây là hàm tạo truy vấn cơ sở dữ liệu dựa trên mô-đun nào được tải: $ sql = 'SELECT a.id làm id, a.address làm địa chỉ';
$query = 'SELECT'
. ' name AS module_name'
. ', databasename AS module_database'
. ', pregmatch AS module_pregmatch'
. ', pregmatch2 AS module_pregmatch2'
. ', html AS module_html'
. ', sqlselect AS database_sqlselect'
. ', sqljoin AS database_sqljoin'
. ', sqlupdatewithvalue AS database_sqlupdatewithvalue'
. ', sqlupdatenovalue AS database_sqlupdatenovalue'
. ' FROM #__aqsgmeta_modules'
. ' WHERE enabled = 1'
. ' ORDER BY id';
$db->setQuery($query);
$results = $db->loadObjectList();
if (count($results) != 0) {
foreach ($results as $result) {
$sqlselect .= ', ';
$sqlselect .= $result->database_sqlselect;
$sqljoin .= ' ';
$result->database_sqljoin = preg_replace('/\{DATABASENAME\}/Ui', $result->module_database, $result->database_sqljoin);
if (!(preg_match("/" . $result->database_sqljoin . "/Ui", $sqljoin)))
$sqljoin .= $result->database_sqljoin;
}
}
if ($use_sh404sef)
$sqlselect .= ', g.oldurl AS sefurl';
$sql .= $sqlselect;
$sql .= ' FROM #__aqsgmeta_address AS a';
$sql .= $sqljoin;
if ($use_sh404sef)
$sql .= ' LEFT JOIN #__redirection AS g ON g.newurl = a.address';
$sql .=
//. ' WHERE a.id IN (' . $cids . ')'
' WHERE a.id = ' . $id
. ' ORDER BY a.address asc,a.id '
;
$db->setQuery($sql);
$rows = $db->loadObjectList();
Bạn hoàn toàn chắc chắn rằng truy vấn được tối ưu hóa, tức là không có cách nào để có được kết quả tương tự với ít tập hợp kết quả trung gian hơn? – VolkerK