我尝试用UTF-8和Latin1 Char集创建我的mysql表.当我使用Latin1时,我使用了索引,当我使用UTF-8时,在选择/限制记录时不使用索引.是否有我错过的Char集导致这种情况发生?
干杯
柯
我需要执行一个简单的查询.
从字面上看,我需要做的就是:
SELECT price, sqft, zipcode FROM homes WHERE home_id = X
Run Code Online (Sandbox Code Playgroud)
当我使用PHP PDO时,我读过的是连接到MySQL数据库的推荐方法,只需创建连接就需要610毫秒.
我的代码如下:
try {
$conn_str = DB . ':host=' . DB_HOST . ';dbname=' . DB_NAME;
$dbh = new PDO($conn_str, DB_USERNAME, DB_PASSWORD);
$params = array();
$sql = 'SELECT price, sqft, zipcode FROM homes WHERE home_id = :home_id';
$params[':home_id'] = X;
$stmt = $dbh->prepare($sql);
$stmt->execute($params);
$result_set = $stmt->fetchAll(PDO::FETCH_ASSOC);
// json output
ob_start("ob_gzhandler");
header('Content-type: text/javascript; charset=utf-8');
print "{'homes' : ";
print json_encode( $result_set );
print '}';
ob_end_flush(); …Run Code Online (Sandbox Code Playgroud) 我遇到了一个特定查询的查询执行速度极慢(如下所示).
奇怪的是,当手动运行查询(使用phpMyAdmin)时,只需要一秒钟即可完成,而使用PDO从PHP运行它需要大约10分钟!
其他查询正常执行(PDO和phpMyAdmin之间的持续时间相等).
技术细节:
我正在运行的查询:
SELECT s.saleID,s.year,s.kilometrage,s.hand,s.price,s.pictures,u.platform,s.date,
(SELECT AVG(price) FROM sales s2 WHERE s2.carID = s.carID AND s2.year = s.year HAVING COUNT(s2.saleID)>5) AS avgPrice
FROM sales s JOIN users u ON u.ID = s.sellerID LEFT JOIN sold so ON s.saleID = so.saleID WHERE so.saleID IS NULL
Run Code Online (Sandbox Code Playgroud)
关于这个问题的任何提示?它与索引无关,因为查询在phpMyAdmin下运行得非常好.
如果有人也有这个 - 似乎PMA在查询的分页上添加了一个隐含的LIMIT,这使得在某些情况下一切运行得更快.