sql 如何加速使用 in 的查询?
先举个例子:
比如,过滤一些产品(衣服)显示的时候,可以选不同的值,比如,颜色,用户多选,红色,绿色,蓝色。
产品表,与这类的属性表之间设置多对多的关系,通常一条sql语句,组合几张表,要用到in的操作。对于这种类似的数据,听听大家都用什么方案加快查询?
看朋友们给的答案,问题太宽泛了。在具体写一下:
方案1:
大数据量的前提下,将一些过滤条跟产品关系放在内存中:
将这些查询的条件必要数据,与产品必要数据,以及关系存于redis中。这样,每次变换过滤条件查询时,通过redis,可以查出商品的数据集合。然后加入分页逻辑,排序逻辑,最后取出N条数据?然后用in 或是 or,去产品表把数据加载出来?
这个可行?
看大家还有什么更好的方案。
回复内容:
先举个例子:
比如,过滤一些产品(衣服)显示的时候,可以选不同的值,比如,颜色,用户多选,红色,绿色,蓝色。
产品表,与这类的属性表之间设置多对多的关系,通常一条sql语句,组合几张表,要用到in的操作。对于这种类似的数据,听听大家都用什么方案加快查询?
看朋友们给的答案,问题太宽泛了。在具体写一下:
方案1:
大数据量的前提下,将一些过滤条跟产品关系放在内存中:
将这些查询的条件必要数据,与产品必要数据,以及关系存于redis中。这样,每次变换过滤条件查询时,通过redis,可以查出商品的数据集合。然后加入分页逻辑,排序逻辑,最后取出N条数据?然后用in 或是 or,去产品表把数据加载出来?
这个可行?
看大家还有什么更好的方案。
曾经发生的过往告诉我,遇到这种情况:
尽量不要用in做大数据集的查询,是会死人的
希望对你有帮助。
上面是模仿之前的回复,前几天好像看到过个问题和题主类似,我的回答意思是这个例子不是几句sql语句用一个db就能解决的,你的面已经铺的太大了,就不要这么小气的设计,考虑其他的实现方式来配合db做,都交给db会吃不消的。如果真的只是考虑衣服和颜色的问题,最多也就2张表的事,小数据用in没什么问题,其实用or就搞定了。
曾经有一个DBA告诉我,遇到这种情况:
分表一定要合理,需要根据数据的量级精心做分表,shema优化,读写分离。
PostgreSQL 在可变长度变量的管理上要比 MySQL 好很多,而且更符合 SQL 标准。
希望对你有帮助。
如果 IN 中是数据个数很少,没问题;如果很多个,使用 JOIN 比较合适,JOIN 字段加索引。

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

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

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











In MySQL, the function of foreign keys is to establish the relationship between tables and ensure the consistency and integrity of the data. Foreign keys maintain the effectiveness of data through reference integrity checks and cascading operations. Pay attention to performance optimization and avoid common errors when using them.

The main difference between MySQL and MariaDB is performance, functionality and license: 1. MySQL is developed by Oracle, and MariaDB is its fork. 2. MariaDB may perform better in high load environments. 3.MariaDB provides more storage engines and functions. 4.MySQL adopts a dual license, and MariaDB is completely open source. The existing infrastructure, performance requirements, functional requirements and license costs should be taken into account when choosing.

Multiple calls to session_start() will result in warning messages and possible data overwrites. 1) PHP will issue a warning, prompting that the session has been started. 2) It may cause unexpected overwriting of session data. 3) Use session_status() to check the session status to avoid repeated calls.

MySQL and phpMyAdmin can be effectively managed through the following steps: 1. Create and delete database: Just click in phpMyAdmin to complete. 2. Manage tables: You can create tables, modify structures, and add indexes. 3. Data operation: Supports inserting, updating, deleting data and executing SQL queries. 4. Import and export data: Supports SQL, CSV, XML and other formats. 5. Optimization and monitoring: Use the OPTIMIZETABLE command to optimize tables and use query analyzers and monitoring tools to solve performance problems.

AI can help optimize the use of Composer. Specific methods include: 1. Dependency management optimization: AI analyzes dependencies, recommends the best version combination, and reduces conflicts. 2. Automated code generation: AI generates composer.json files that conform to best practices. 3. Improve code quality: AI detects potential problems, provides optimization suggestions, and improves code quality. These methods are implemented through machine learning and natural language processing technologies to help developers improve efficiency and code quality.

In MySQL, add fields using ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column, delete fields using ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop. When adding fields, you need to specify a location to optimize query performance and data structure; before deleting fields, you need to confirm that the operation is irreversible; modifying table structure using online DDL, backup data, test environment, and low-load time periods is performance optimization and best practice.

session_start()iscrucialinPHPformanagingusersessions.1)Itinitiatesanewsessionifnoneexists,2)resumesanexistingsession,and3)setsasessioncookieforcontinuityacrossrequests,enablingapplicationslikeuserauthenticationandpersonalizedcontent.

To safely and thoroughly uninstall MySQL and clean all residual files, follow the following steps: 1. Stop MySQL service; 2. Uninstall MySQL packages; 3. Clean configuration files and data directories; 4. Verify that the uninstallation is thorough.
