When doing query optimization, the
SHOW STATUS query returns values that are easy to understand with some practice and explanation.
last_query_cost is obscure and poorly documented.
The only thing explained is that it must be read as an anti-macho value: the smaller the better.
But do we have further information about this high-level value? What is its unit? How is it calculated (estimated)? etc. How can we use it for an advanced profiling?
Thanks for your precious help. :)
Is a relational database well suited for vector calculations?
Deserializing data from file. Performance issue
When you enter and execute a query, MySQL will construct a query plan.
Are loops really faster in reverse?
This is done by evaluating how the query can be executed in several different ways, and assigning "costs" to the different possibilities.
-fno-omit-frame-pointer without optimization
These costs are based mostly on internal statistics, and includes data such as the number of rows in the table, the cardinality of different indices and so forth.
optimization and debugging options in Makefile
When this is done, MySQL choses the least expensive plan and executes the query.
The last_query_cost value is this cost value..
C++ stack and scope
As you've no doubt seen in the manual:.
The total cost of the last compiled query as computed by the query optimizer.This is indeed true.
This is useful for comparing the cost of different query plans for the same query.
The default value of 0 means that no query has been compiled yet.
The default value is 0.
Last_query_cost has session scope..
The value is only useful as a quantitative measurement to compare different queries.. There's some interesting resources on the query optimizer available online, if you want to learn more.
Unfortunately, I don't have any links for you readily available, but it shouldn't be too hard to find some resources through a simple search for "mysql query optimizer"..
One thing I didn't show you about those two queries was the value of Last_query_cost.
That's because it showed the slower, more data-intensive query actually having a lower cost than the faster one: Last Query Cost in Table Redesign.That's pretty bizarre, isn't it? I don't know how the query cost is calculated; I believe the optimizer calculates it in advance of actually executing the query.
Variable_name Design1 Design2 Last_query_cost 20343.599000 71039.632551
It definitely doesn't match the actual cost of executing these queries.
It is usually more in line with the true cost, but not always.
You should not rely on it absolutely..