我需要从数据库中选择25个列,条件为WHERE和ORDER BY。
我尝试为此制作索引,但仅限于16列。我如何组织mysql语句和数据库,以便以最快的方式从PHP中的数据库中选择这25列?
示例表:
列:A,B,C,D,E,F,....
查询:“选择A,B,C,D,E,F,...... FROM表WHERE X = 5 ORDER BY Z”
更新1:
这是一张大表(很多行),这就是为什么我需要一个索引来加速这个过程。
答案 0 :(得分:7)
索引与您选择的列数(不包括FULLTEXT)相比没有性能inpact。它们仅用于在使用选择(WHERE)和有时订购(ORDER BY)和聚合(GROUP BY等)时加速。
在这种情况下,您需要在X和Z上定义索引以获得最佳效率。因为MySQL每个查询只能使用1个索引,所以你需要一个索引(X,Z)(因为X上的选择是第一个,然后在Z上排序)。 请注意,这也是X 的索引。
此外,包含所有列的索引几乎与表条目相同(尽管已排序),因此您不会从中获得很多SELECT性能,而INSERT / UPDATE / DELETE性能会直线下降。
答案 1 :(得分:1)
使用上述列并在此处执行select语句的视图怎么样?
答案 2 :(得分:0)
在您的情况下,唯一有帮助的索引是x和z上的索引。更改表tbl添加键(x,z)。
mysql每个查询每个表只使用1个索引。因此,拥有多个索引对这一个查询无济于事。
答案 3 :(得分:-1)
你的意思是使用SELECT * FROM table bla bla bla?