我需要从数据库中选择 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:
这是一个大表(很多行),这就是为什么我需要一个索引来加速这个过程。
索引对您选择的列数(不包括 FULLTEXT)没有性能影响。它们仅用于在您使用选择(WHERE)以及有时排序(ORDER BY)和聚合(GROUP BY 等)时加快速度。
在这种情况下,您需要在 X 和 Z 上定义索引以获得最佳效率。因为 MySQL 每个查询只能使用 1 个索引,所以您需要 (X,Z) 上的索引(因为首先在 X 上选择,然后在 Z 上排序)。请注意,这兼作 X 的索引。
此外,包含所有列的索引几乎与表条目相同(尽管已排序),因此您不会从中获得太多 SELECT 性能改进,而 INSERT/UPDATE/DELETE 性能会直线下降。
具有上述列的视图并对此执行 select 语句呢?
在您的情况下,唯一有用的索引是 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.
你的意思是使用 SELECT * FROM table where bla bla bla 吗?