发布此消息时,我很困惑。 我不明白为什么我在php中触发EXPLAIN与在navicat中为完全相同的查询触发EXPLAIN时查询的查询计划为何不同。
查询:
SELECT
MAX(`SaleID`) AS 'LatestSaleID',
MAX(`SaleDate`) AS 'MyLastVisit',
COUNT(SaleID) AS 'MyNumVisits'
FROM sales_table
WHERE sales_table.CustomerID = '5207'
说明Navicat的输出:
说明从PHP触发时的输出:
如您所见,解释输出有很大的不同。由于存在这种差异,因此从我的PHP页面执行查询的时间要长4倍。
我尝试使用强制索引。但是,那也不起作用。
SELECT
MAX(`SaleID`) AS 'LatestSaleID',
MAX(`SaleDate`) AS 'MyLastVisit',
COUNT(SaleID) AS 'MyNumVisits'
FROM sales_table USE INDEX(CustomerID)
WHERE sales_table.CustomerID = '5207'
我找到了一条相关的帖子-PHP takes 90x longer to run query than MySQL client。但是,我无法找到有关查询计划差异的任何信息。
这是一个仍在使用mysql_query的旧版应用程序。