我附加了一個函數到PHP中的REGEXP關鍵字,我發現SQLite3Result :: fetchArray重新執行查詢!什麼效率低下!PHP SQLite3Result :: fetchArray重新執行查詢
function _sqliteRegexp($pattern, $string)
{
echo $pattern . ' - ' . $string . '<br/>';
return preg_match('/' . $pattern . '/', $string);
}
$handle = new SQLite3($filename);
$handle->createFunction('regexp', '_sqliteRegexp', 2);
// (1)
$result = $handle->query("SELECT * FROM pages WHERE '" . $request_uri . "' REGEXP request LIMIT 1;");
// (2)
$result->fetchArray();
給予,例如:
(1)
\/ - /admin/settings/1
\/sqlite - /admin/settings/1
\/admin - /admin/settings/1
\/admin\/logout - /admin/settings/1
\/admin\/settings(\/[0-9]+)? - /admin/settings/1
(2)
\/ - /admin/settings/1
\/sqlite - /admin/settings/1
\/admin - /admin/settings/1
\/admin\/logout - /admin/settings/1
\/admin\/settings(\/[0-9]+)? - /admin/settings/1
兩者(1)和(2)回聲圖案和字符串非常相同的。我高度懷疑這個查詢是被重新執行的,這是相當多的。這是一個錯誤還是隻是我匆忙結束?
多少次叫用'LIMIT 3'? –
LIMIT不具影響力。它只是使查詢停止而不是整個表格。我用迴應的內容修改了我的帖子。 –