【发布时间】:2011-01-23 19:17:06
【问题描述】:
我有一个包含超过 10,000,000 行的数据库。现在查询它可能需要几秒钟才能找到一些基本信息。这不是可取的,我知道优化的最佳方法是尽量减少可能的行数,但现在我没有时间这样做。
优化MySQL 数据库以便在查询时缩短所用时间的最简单方法是什么?
我不介意数据库的大小,这并不重要,因此任何增加大小的优化都可以。我不太擅长优化,现在我已经设置了索引,但我不确定我能从那里得到多少。
我最终会适当地缩减数据库,但有没有快速的临时解决方案?
【问题讨论】:
-
可能问题出在查询...可能是服务器硬件不够强大,我想我们需要更多信息。
-
有没有办法改进简单的选择查询?查询字面意思是“SELECT * FROM table WHERE column="something"”。硬件方面,也许吧,但是服务器没有以最大容量运行,所以我不确定是否是这样,虽然显然更好的硬件会更好:-D
-
对查询使用 EXPLAIN 以了解数据库服务器如何执行它们。使用此信息,您可以创建所需的索引。 10M的记录不算多,应该不会出大问题。除非它们每个都是 1GB... ;)
-
我在 0.5 秒内对超过 1 亿行运行了复杂的查询,但我有一个设计合理的数据库,它利用了 innodb 聚集索引、二级索引、非规范化、汇总表、正确的数据类型(tinyint unsigned 1byte vs int无符号 4 字节)、正确的 mysql 配置和许多其他优化。 (根据我的经验,分区减慢了我的性能)1000 万并不像 Frank Heikens 上面所说的那样 - 向我们展示您的疑问并解释计划,以便我们进一步发表评论。
标签: php mysql optimization