在不更改 row_count() 的情况下解释 MySQL 查询
Explain MySQL query without changing row_count() from previous query
在应用程序中,有时查询很慢,我会在事后 "explain" 它们(如果它们很慢)并记录它们,这样我就可以随着时间的推移改进应用程序。
但是,如果我在 运行 和 "explain " 之后,row_count() 不再反映受原始查询影响的行数,这是我不想要的。有没有办法 运行 解释查询(或任何查询),而不更改 row_count()?
注意:我目前正在做的是打开一个单独的 link 数据库,并解释如何使用 link。这行得通,但我无法以这种方式解释使用临时表的查询。我正在寻找一种不同的解决方案,它将保留 row_count() 并使用临时表。
捕获 row_count()
到一个变量中,如果你以后需要它。无论如何你应该这样做,因为这个值的有效性范围非常有限。
该值与特定连接相关联,并在您执行的每个查询时重置...并且 EXPLAIN ...
是一个查询。
没有办法改变这种行为。
重新排列您的代码...
SELECT ...
get ROW_COUNT ...
EXPLAIN SELECT ...
另请注意,EXPLAIN's
"Row" 列是一个近似值;它很少匹配 ROW_COUNT()
.
在应用程序中,有时查询很慢,我会在事后 "explain" 它们(如果它们很慢)并记录它们,这样我就可以随着时间的推移改进应用程序。
但是,如果我在 运行 和 "explain " 之后,row_count() 不再反映受原始查询影响的行数,这是我不想要的。有没有办法 运行 解释查询(或任何查询),而不更改 row_count()?
注意:我目前正在做的是打开一个单独的 link 数据库,并解释如何使用 link。这行得通,但我无法以这种方式解释使用临时表的查询。我正在寻找一种不同的解决方案,它将保留 row_count() 并使用临时表。
捕获 row_count()
到一个变量中,如果你以后需要它。无论如何你应该这样做,因为这个值的有效性范围非常有限。
该值与特定连接相关联,并在您执行的每个查询时重置...并且 EXPLAIN ...
是一个查询。
没有办法改变这种行为。
重新排列您的代码...
SELECT ...
get ROW_COUNT ...
EXPLAIN SELECT ...
另请注意,EXPLAIN's
"Row" 列是一个近似值;它很少匹配 ROW_COUNT()
.