【发布时间】:2011-11-23 08:55:52
【问题描述】:
据我了解,典型数据库表上的索引将提供更有效的行查找。是否存在用于使聚合函数查询更有效的类似结构?
举个例子,假设我有一个像下面这样的表格,里面有很多行
Employees
employeeId | office | salary
SELECT office, MAX(salary)
FROM Employees
GROUP BY office
我想有效地检索每个办公室员工的MAX() 工资。在这种情况下,我不介意额外的插入/更新开销,因为我会经常进行此查询,而不是经常写入表。
我的引擎是 MySQL 上的 MyISAM
【问题讨论】:
-
除了在其他地方手动跟踪最大值之外,我没有看到任何解决办法。
-
我想在
salary上添加一个索引会加速聚合函数MAX(salary)。不是吗? -
@rfausak: 不,单个字段
salary索引根本没有帮助 -
@JohnFx:在这种情况下,
clustered索引如何优于常规索引(office + salaryone)? -
@JohnFx:顺便说一句,他使用
myisam,所以他没有定义聚集索引
标签: mysql sql database-indexes