Table of Contents
Reply content:
Home Backend Development PHP Tutorial mysql query optimization

mysql query optimization

Dec 01, 2016 am 12:56 AM
mysql php

Mysql query, to filter out the results of a certain field packageId (not the primary key) = num, is it better to use not in directly or to filter out when the query is completed and the result set is traversed. After the query is completed, the result set needs to be traversed no matter what. mysql query optimization

Reply content:

Mysql query, to filter out the results of a certain field packageId (not the primary key) = num, is it better to use not in directly or to filter out when the query is completed and the result set is traversed. After the query is completed, the result set needs to be traversed no matter what. mysql query optimization

The subject added the question in the comments

We just take the index into consideration, so we consider that query conditions like <> will not use the index, and the full table query speed will be very slow. However, the amount of data for this task is still very large. This is a function that sends text message reminders to some package users of the website. It is not equal to 7 because this package is given for free and is not considered. So it must be removed.

For this kind of full table traversal with a large amount of data, first of all, this method of fetching the whole table is not advisable. You can consider querying in the form of primary key id segmentation. For example, your first query id > 200 records of 0, then record the maximum id, and then query > 200 records of the current maximum id, and so on

In this scenario of id segmentation, you can safely put your packageId into the query conditions, because it must go to the primary key id, so the maximum number of data filtered by mysql is only 200, so it is not a big problem. (200 is just an example, you can control it according to the actual situation and service pressure)

An additional benefit is that you can also observe the progress of the current task in real time (if 200 users are sent, you can log it, and if it is interrupted, you can also know where to start)


==== Here is the original answer ===

Your query does not have paging, so it is assumed that the amount of your data is actually very small. And because there is no paging, there will inevitably be a full table scan. Just do it directly during the SQL query. There is not much difference
In addition , it’s just not equal to a value, so it’s more intuitive to use !=

If your query has a large amount of data, or it actually has paging (but your demo code here has not been written yet), then you should consider whether there are other indexed query conditions to assist your query. to your data, if not, then you need to consider whether to add an index to this packageId (if the distribution of packageId is scattered enough in this table)

select * from userPackage where packageId<>7
Copy after login

Use directly<>

The first one is faster.
Mysql query speed is much faster than traversal speed. The fewer iterations when traversing, the better.

It must be the first speed. Don’t take out all the data. . . mysql can’t stand it

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MySQL: The Ease of Data Management for Beginners MySQL: The Ease of Data Management for Beginners Apr 09, 2025 am 12:07 AM

MySQL is suitable for beginners because it is simple to install, powerful and easy to manage data. 1. Simple installation and configuration, suitable for a variety of operating systems. 2. Support basic operations such as creating databases and tables, inserting, querying, updating and deleting data. 3. Provide advanced functions such as JOIN operations and subqueries. 4. Performance can be improved through indexing, query optimization and table partitioning. 5. Support backup, recovery and security measures to ensure data security and consistency.

Can I retrieve the database password in Navicat? Can I retrieve the database password in Navicat? Apr 08, 2025 pm 09:51 PM

Navicat itself does not store the database password, and can only retrieve the encrypted password. Solution: 1. Check the password manager; 2. Check Navicat's "Remember Password" function; 3. Reset the database password; 4. Contact the database administrator.

How to create navicat premium How to create navicat premium Apr 09, 2025 am 07:09 AM

Create a database using Navicat Premium: Connect to the database server and enter the connection parameters. Right-click on the server and select Create Database. Enter the name of the new database and the specified character set and collation. Connect to the new database and create the table in the Object Browser. Right-click on the table and select Insert Data to insert the data.

How to view database password in Navicat for MariaDB? How to view database password in Navicat for MariaDB? Apr 08, 2025 pm 09:18 PM

Navicat for MariaDB cannot view the database password directly because the password is stored in encrypted form. To ensure the database security, there are three ways to reset your password: reset your password through Navicat and set a complex password. View the configuration file (not recommended, high risk). Use system command line tools (not recommended, you need to be proficient in command line tools).

Navicat cannot connect to MySQL/MariaDB/PostgreSQL and other databases Navicat cannot connect to MySQL/MariaDB/PostgreSQL and other databases Apr 08, 2025 pm 11:00 PM

Common reasons why Navicat cannot connect to the database and its solutions: 1. Check the server's running status; 2. Check the connection information; 3. Adjust the firewall settings; 4. Configure remote access; 5. Troubleshoot network problems; 6. Check permissions; 7. Ensure version compatibility; 8. Troubleshoot other possibilities.

How to create a new connection to mysql in navicat How to create a new connection to mysql in navicat Apr 09, 2025 am 07:21 AM

You can create a new MySQL connection in Navicat by following the steps: Open the application and select New Connection (Ctrl N). Select "MySQL" as the connection type. Enter the hostname/IP address, port, username, and password. (Optional) Configure advanced options. Save the connection and enter the connection name.

Navicat connects to database error code and solution Navicat connects to database error code and solution Apr 08, 2025 pm 11:06 PM

Common errors and solutions when connecting to databases: Username or password (Error 1045) Firewall blocks connection (Error 2003) Connection timeout (Error 10060) Unable to use socket connection (Error 1042) SSL connection error (Error 10055) Too many connection attempts result in the host being blocked (Error 1129) Database does not exist (Error 1049) No permission to connect to database (Error 1000)

How to connect to local mysql in navicat How to connect to local mysql in navicat Apr 09, 2025 am 07:45 AM

To connect to a local MySQL database using Navicat: Create a connection and set the connection name, host, port, username, and password. Test the connection to make sure the parameters are correct. Save the connection. Select a new connection from the connection list. Double-click the database you want to connect to.

See all articles