Mysql 带条件和排序的SQL限制查询优化

Mysql 带条件和排序的SQL限制查询优化,mysql,optimization,Mysql,Optimization,有一个SQL: 从表中选择*,其中A=cid顺序按B描述,C描述下限,10; 每一列都有自己的索引 当下限较大时,查询需要很长时间。因为表中有10亿条记录,有些cid的记录超过1000万条 我尝试添加联合索引a、B、C。我的数据库基于MySQL,但不支持联合索引 是否有优化此查询的解决方案?您可以按如下方式创建复合索引: CREATE INDEX index_name ON table_name(A,B,C); 从: 即使ORDER BY与索引不完全匹配,也可以使用索引,只要索引的所有未使用

有一个SQL:

从表中选择*,其中A=cid顺序按B描述,C描述下限,10; 每一列都有自己的索引

当下限较大时,查询需要很长时间。因为表中有10亿条记录,有些cid的记录超过1000万条

我尝试添加联合索引a、B、C。我的数据库基于MySQL,但不支持联合索引

是否有优化此查询的解决方案?

您可以按如下方式创建复合索引:

CREATE INDEX index_name 
ON table_name(A,B,C);
从:

即使ORDER BY与索引不完全匹配,也可以使用索引,只要索引的所有未使用部分和所有额外ORDER BY列都是WHERE子句中的常量

您可以按如下方式创建复合索引:

CREATE INDEX index_name 
ON table_name(A,B,C);
从:

即使ORDER BY与索引不完全匹配,也可以使用索引,只要索引的所有未使用部分和所有额外ORDER BY列都是WHERE子句中的常量


事实上,在A,B,C上建立索引可能会有所帮助。你是说你不能创建这个索引吗?是的,它不支持你从哪里提出的术语联合索引??那么,是什么让您认为这样的复合索引不受支持呢?有一个较大的下界问题-在交付所需的10行之前,需要将表或索引扫描过那么多行。事实上,a、B、C上的索引可能会有所帮助。你是说你不能创建这个索引吗?是的,它不支持你从哪里提出的术语联合索引??那么,是什么让您认为这样的复合索引不受支持呢?有一个较大的下限问题-在交付所需的10行之前,表或索引需要扫描过那么多行。OP似乎已经尝试过这一点。而且,你没有解释为什么这会有帮助。我怀疑OP是否真的尝试过这个。也许他试图做一些类似于创建联合索引的事情,这是假的。OP似乎已经尝试过了。而且,你没有解释为什么这会有帮助。我怀疑OP是否真的尝试过这个。也许他试图做一些类似于创建联合索引的事情,这是假的。