繁体   English   中英

在某些情况下的SQL查询工作缓慢-MySQL

[英]SQL query with some conditions is working slow - MySQL

这是我的问题,我有一个包含1,230,000条记录的表,并且正在我的应用程序中执行此查询

SELECT id_product 
  FROM products 
 WHERE user_id = '322' 
   AND (status = 1 OR status = 3) 
   AND product_date BETWEEN '2017-11-01' AND '2017-12-31' 
   AND required = 0

而且此查询从表中获得206条记录(这是正确的),但是它花费了4.5秒左右的时间,这太长了,因为我多次在同一页面中多次使用不同的值进行此查询。

但是如果我只这样做

SELECT id_product FROM products WHERE user_id = '322'

需要0.322秒

WHERE语句中的每一列都有一个索引,所以这是我的问题,在查询中是否真的需要添加条件? 因为在这种情况下,我看不到要点,我的意思是第一个查询只能找到我需要的内容,但是要花很长时间,第二个查询可以解决所有问题,但是我可以使用我正在使用的编程语言进行过滤,或者您认为在那里是我想念的东西吗? 希望您能指导我,谢谢。

您可以检查文档以使用索引提示来强制查询使用或不使用索引,如下所示:

SELECT * FROM table1 USE INDEX (col1_index,col2_index)
  WHERE col1=1 AND col2=2 AND col3=3;

SELECT * FROM table1 IGNORE INDEX (col3_index)
  WHERE col1=1 AND col2=2 AND col3=3;

文档: https : //dev.mysql.com/doc/refman/5.7/en/index-hints.html

另外,如果确实有必要,您可以创建一个更有效的索引,包括WHERE的其他字段。 测试两个选项,看看有什么更好的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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