0

在一个更大的表(大约 0.5 万行增长)上,我运行以下查询需要很长时间:

SELECT track, MIN(time) as t, buse, serviceid 
FROM depart 
WHERE `to` IS NOT NULL AND platform_id = 1025 AND time > 741 
GROUP BY serviceid

什么是支持快速运行此查询的好索引?到目前为止,它使用带有,和的platform_id索引。wherefilesorttemp

先感谢您。

4

2 回答 2

1

正确的索引方法取决于数据的分布。如果只有一排的平台为 1025,则情况与所有行的平台为 1025 的情况不同。

做出合理的假设,您可能需要(平台,时间)上的索引。如果to通常为 NULL,则索引(平台、目标、时间)可能会有所改进。

使用索引的方式是 MySQL 将在索引中找到满足where子句的值。然后它将在每一页中读取这些记录以获取其余变量并处理查询。假设有几百条记录符合条件,这应该会显着加快查询速度。

于 2013-01-06T15:01:01.227 回答
0

试试这个:s

SELECT track, MIN(time) as t, buse,DISTINCT serviceid 
FROM depart 
WHERE `to` IS NOT NULL AND platform_id = 1025 AND time > 741 
于 2013-01-06T14:12:11.477 回答