mysql query optimization
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.
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.
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
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

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



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.

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.

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.

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).

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.

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.

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)

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.
