1

我需要从数据库中选择 25 列,条件为 WHERE 和 ORDER BY。

我试图为此建立一个索引,但它仅限于 16 列。我如何组织 mysql 语句和数据库以最快的方式从 PHP 中的数据库中选择这 25 列?

示例表:

列:A、B、C、D、E、F、....

查询:“SELECT A, B, C, D, E, F, ... FROM table WHERE X = 5 ORDER BY Z”

更新 1:

这是一个大表(很多行),这就是为什么我需要一个索引来加速这个过程。

4

4 回答 4

7

索引对您选择的列数(不包括 FULLTEXT)没有性能影响。它们仅用于在您使用选择(WHERE)以及有时排序(ORDER BY)和聚合(GROUP BY 等)时加快速度。

在这种情况下,您需要在 X 和 Z 上定义索引以获得最佳效率。因为 MySQL 每个查询只能使用 1 个索引,所以您需要 (X,Z) 上的索引(因为首先在 X 上选择,然后在 Z 上排序)。请注意,这兼作 X 的索引

此外,包含所有列的索引几乎与表条目相同(尽管已排序),因此您不会从中获得太多 SELECT 性能改进,而 INSERT/UPDATE/DELETE 性能会直线下降。

于 2012-05-03T12:12:52.180 回答
1

具有上述列的视图并对此执行 select 语句呢?

于 2012-05-03T12:16:46.123 回答
0

在您的情况下,唯一有用的索引是 x 和 z 上的索引。更改表 tbl 添加键 (x, z)。

mysql only uses 1 index per table per query. so having many indexes will not help for this one query.

于 2012-05-03T12:41:03.960 回答
-1

你的意思是使用 SELECT * FROM table where bla bla bla 吗?

于 2012-05-03T12:17:00.327 回答