[英]Possible causes that a MySQL/MariaDB query is slow under some table conditions
[英]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.