为什么数据库不能根据查询频率自动索引表?是否存在任何工具来分析数据库及其正在接收的查询,并自动创建或至少建议要创建哪些索引?
我对MySQL特别感兴趣,但我对其他数据库也很好奇.
这是我在stackoverflow上看到的最好的问题.不幸的是我没有答案.Google的bigtable会自动索引正确的列,但BigTable不允许任意连接,因此问题空间要小得多.
我能给出的唯一答案是:
有一天有人问:"为什么计算机不能只分析我的代码并编译并静态输入最常运行的代码片段?"
人们今天正在解决这个问题(例如,FF3.1中的Tamarin),我认为"自动索引"关系数据库是同一类问题,但它并不是优先考虑的问题.十年后,手动将索引添加到数据库将被视为浪费时间.目前,我们一直在监控慢速查询和运行优化器.
有数据库优化器可以启用或附加到数据库,以建议(并在某些情况下执行)可能有助于解决问题的索引.
然而,这也不是一个很重要的问题,而当这些艾滋病刚出来的用户有时会发现它实际上减慢他们的数据库下降,原因是劣质的优化.
最后,数据库架构师在行业中有很多钱,他们更喜欢现状.
数据库越来越智能化.如果您将SQL Server Profiler与Microsoft SQL Server一起使用,您将找到加快服务器运行速度的方法.其他数据库具有类似的分析器,并且有第三方实用程序来完成此工作.
但是如果你是编写查询的人,希望你能够充分了解你正在做的事情,以便为正确的字段编制索引.如果没有,那么拥有正确的索引可能是你问题最少的......
-亚当