我在与mysql数据库通信的php文档中有类似以下的代码:
$db = new PDO('mysql:host=127.0.0.1;dbname=db;charset=UTF-8', 'name', 'pw',array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => true, PDO::MYSQL_ATTR_USE_BUFFERED_QUERY=>true));
$stmt=$db->prepare("SELECT SUM(anything)
FROM table
WHERE date IN (SELECT date FROM table WHERE something=:something AND somethingElse=:somethingElse)
AND somethingElse=:somethingElse1");
此代码第一次在浏览器中运行需要很长时间...如果通过刷新再次执行它运行速度超过100倍。我试图弄清楚是什么原因导致这样的pdo语句在刷新时运行得如此之快并且无法弄明白。
答案 0 :(得分:1)
这是mysql的查询缓存开始...只要你的RAM(读取:MySQL缓存内存分配)足够大,几乎任何SELECT都会发生这种情况。
答案 1 :(得分:1)
优化,快点几点:
答案 2 :(得分:0)
那只是查询缓存 它与准备好的陈述无关。
无论如何,您必须优化查询,以使其始终快速运行。
答案 3 :(得分:0)
服务器“缓存”执行查询。所以第一次花了很多时间,但之后系统知道如何解决它。
答案 4 :(得分:0)
首先,如果您有正确的索引,那么这样的事情根本不应该花很长时间(即使在大型表格上)。
您的表格是什么,以及索引是如何设置的。这有助于我们优化您的查询。