Slow Stored Procedure Execution Due to Inconsistent Collations
Scenario
It took more than 1 minute to process a small amount of data using a stored procedure in a GaussDB(for MySQL) instance. However, executing the SQL statement in the stored procedure was much faster.
Possible Causes
The collation of the stored procedure is inconsistent with that of the related table and database. As a result, a large number of characters need to be converted in the query result, and the execution is slow.
Troubleshooting:
Run the following commands to view the definitions of the stored procedure and related table and check whether the collations are the same:
SHOW CREATE PROCEDURE xxx; SHOW CREATE TABLE xxx
For example:
mysql> SHOW CREATE PROCEDURE testProc \G *************************** 1. row *************************** Procedure: showstuscore sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Create Procedure: xxx character_set_client: utf8mb4 collation_connection: utf8mb4_general_ci Database Collation: utf8_general_ci 1 row in set (0.01 sec)
The collation of the stored procedure is utf8mb4_general_ci, but the collation of the database is utf8_general_ci by default. The collations are inconsistent, which may cause performance issues.
Solution
Change the collation of the stored procedure to be the same as that of the related table and database.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.