简体   繁体   中英

Is there a faster query for this mysql query?

I am working with mysql dbs. There are two columns in a particular table (column1 and column2) and 10000000+ rows. I want to get all entries where column1 is one of a list of 50000 no.s. I am using this query currently:

Select * from db.table where column1 in (list of 50000 no.s)

Is there a faster query than this?

I can not talk about MySQL - only SQL Server - but the same principle may apply.

On SQL Server an IN has a serious problem of no statistics. Which means that with a non trivial number, the query plan is a table scan.

It is better to make a temporary table and load the ID's (AND put in a unique index on it which puts up statistics) and then JOIN between the two tables. More for the query analyzer to work with.

  • INDEX(column1)
  • Are there only 2 columns in the table? If not, then don't use SELECT * , but spell out the column names.
  • Please provide EXPLAIN SELECT ...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM