首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL优化137000行表

MYSQL优化137000行表
EN

Stack Overflow用户
提问于 2009-06-05 11:21:49
回答 2查看 1.3K关注 0票数 2

我试图在红矿数据库太痛苦之前优化它;更改(基本上是所有SVN更改的日志)位于137000行(ish),表设置为b默认设置。没有钥匙包装等。

表如下

代码语言:javascript
复制
ID int[11] Auto Inc (PK)
changeset_id int[11]
action varchar[1]
path varchar[255]
from_path varchar[255]
from_revision varchar[255]
revision varchar[255]
branch  varchar[255]

索引:主要(ID),

              changeset_id设置为索引

全部基于latin1字符集,基于来自http://forge.mysql.com/wiki/Top10SQLPerformanceTips的一些信息

表引擎是InnoDB包键被设置为默认(只有Pack )

所有其他选项都被关闭。

优化这个问题的最好方法是什么?(条形截尾;o) )

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-05 13:19:23

mysql有一些通用的优化技术:第一种是确保数据类型适合ABC(参见这里)。从上到下,ID和changeset_id看起来都很好,操作应该是char1而不是varchar (如果可以将它保留为空(通常,确保在其他字段上正确设置了可空))。至于其他5个字段(取决于大小可能会主导表),字符串是否是正确的数据类型?(我猜是path,from_path,分支,但也许修订应该是一个数字(我猜它不是支持git之类的))

此外,它们看起来类似于规范化目标,特别是因为“路径”和“修订”表将使其中的四个规范化(如果需要,可以使用这里有一个基本教程)。

票数 2
EN

Stack Overflow用户

发布于 2009-06-05 11:28:36

这完全取决于您的读和写特性,即您正在进行的查询,以及您写入它的频率。

优化写入的方法是最小化索引的数量。理想情况下,您将使用MS SQL server中的“聚集索引”,使用单调递增的键,确保将新记录写入表的末尾,而不编写其他单独的索引。更好的是,如果您不需要任何事务处理功能,则跳过DBMS并写入某个类型的普通旧日志文件。

对于查询,这可以变得非常复杂。但是,请记住,如果您需要从表中获取大量数据来进行查询(也就是说,它不仅仅是根据键查找单个记录),表扫描可能也不是一件坏事。通常,如果您正在检查表中超过3-5%的内容,则表扫描将非常快。同样,对于这一点,一个普通的旧文件可能比DBMS更快。

如果必须对两者进行优化,请考虑为编写进行优化,然后定期对查询进行优化,并对副本执行查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/955394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档