Does a single quote cause MySQL performance loss?
MYSQL performance loss caused by a single quote
It is inevitable to encounter some dissatisfaction in life, some of which come from ourselves, and some of which do not. Today is the winter solstice, which is said to be the shortest day and longest night in the Northern Hemisphere. Today we are going to share that one of my colleagues mentioned the huge difference between adding single quotes or not, which is very meaningful for MYSQL performance optimization.
As we just said, there will inevitably be some dissatisfaction in life. For example, we use a string type field as the primary key. On the surface, this is too unsatisfactory. However, it has also been proven to be useful. of. The problem arises. When single quotes are added to the field value in the query statement, the query time differs by a hundred times!
The test table I created looks like this:
CREATE TABLE `foo` ( `key` VARCHAR(10) NOT NULL, `time` INT(11) NOT NULL, PRIMARY KEY (`key`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Then insert more than 300,000 pieces of data, and then execute the following SQL statement:
SELECT * FROM `foo` WHERE `key` =1293322797
The query takes 0.1288 seconds, It takes about this long, and then, add single quotes to 1293322797:
SELECT * FROM `foo` WHERE `key` ='1293322797'
The query takes 0.0009 seconds, which is basically a 100-fold difference! ! ! In other words, without adding single quotes, the performance of MYSQL is reduced by 100 times, which is a shocking ratio!
Later, I used EXPLAIN to run the above two statements respectively, as shown in the two pictures below:
When there are no single quotes
With When using single quotes
#It is obvious that the main index is not used without using single quotes, and a full table scan is performed. Using single quotes can use the upper index.
Later, I tested them separately using greater than, and the returned result sets were the same, and their time-consuming was the same as above. I used EXPLAIN to test, and it was the same as above.
SELECT * FROM `foo` WHERE `key` >1293322797 SELECT * FROM `foo` WHERE `key` >'1293322797'
With single quotes and without Adding single quotes makes such a big difference! It will have such a big impact on mysql performance.
Later, I changed the field key to the INT type. At this time, there is no difference whether to add single quotes or not. EXPLAIN shows that they can also use the main index, but key_len becomes shorter.
Recommended: "mysql tutorial"
The above is the detailed content of Does a single quote cause MySQL performance loss?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Big data structure processing skills: Chunking: Break down the data set and process it in chunks to reduce memory consumption. Generator: Generate data items one by one without loading the entire data set, suitable for unlimited data sets. Streaming: Read files or query results line by line, suitable for large files or remote data. External storage: For very large data sets, store the data in a database or NoSQL.

MySQL query performance can be optimized by building indexes that reduce lookup time from linear complexity to logarithmic complexity. Use PreparedStatements to prevent SQL injection and improve query performance. Limit query results and reduce the amount of data processed by the server. Optimize join queries, including using appropriate join types, creating indexes, and considering using subqueries. Analyze queries to identify bottlenecks; use caching to reduce database load; optimize PHP code to minimize overhead.

Backing up and restoring a MySQL database in PHP can be achieved by following these steps: Back up the database: Use the mysqldump command to dump the database into a SQL file. Restore database: Use the mysql command to restore the database from SQL files.

How to insert data into MySQL table? Connect to the database: Use mysqli to establish a connection to the database. Prepare the SQL query: Write an INSERT statement to specify the columns and values to be inserted. Execute query: Use the query() method to execute the insertion query. If successful, a confirmation message will be output.

One of the major changes introduced in MySQL 8.4 (the latest LTS release as of 2024) is that the "MySQL Native Password" plugin is no longer enabled by default. Further, MySQL 9.0 removes this plugin completely. This change affects PHP and other app

To use MySQL stored procedures in PHP: Use PDO or the MySQLi extension to connect to a MySQL database. Prepare the statement to call the stored procedure. Execute the stored procedure. Process the result set (if the stored procedure returns results). Close the database connection.

Creating a MySQL table using PHP requires the following steps: Connect to the database. Create the database if it does not exist. Select a database. Create table. Execute the query. Close the connection.

Oracle database and MySQL are both databases based on the relational model, but Oracle is superior in terms of compatibility, scalability, data types and security; while MySQL focuses on speed and flexibility and is more suitable for small to medium-sized data sets. . ① Oracle provides a wide range of data types, ② provides advanced security features, ③ is suitable for enterprise-level applications; ① MySQL supports NoSQL data types, ② has fewer security measures, and ③ is suitable for small to medium-sized applications.
