By diving into the details of our case study, we will explain how incorrect table statistics may lead the optimizer to choose a suboptimal execution plan. We will also go into how MySQL calculates the table statistics and the ways to correct the table statistics to prevent it from happening again.
Case study: Incorrect table statistics lead the optimizer to choose a poor execution plan.
A customer reported a drastic performance degradation of a query while there were no code changes and no configuration changes made. The data in this article has been edited for brevity and modified to mitigate the exposure of confidential information. The case has also been approved for publication by the customer.
We obtained the query execution plan, and got the results as shown below (execution plan #1):
mysql> explain -> SELECT count(con.id) , -> MAX(DAYNAME(con.date)) , -> …[Read more]