Ale*_*llo 5 mysql performance primary-key varchar
我正在将传统的专有应用程序中的日志文件行解析为一个易于查询的数据库。日志行没有唯一的整数 ID。它们确实有一个 UNIX 时间戳作为 8 个字符的十六进制字符串。遗憾的是,这些时间戳并不总是保证是唯一的。还有一个 2-6(因此是VARCHAR)字符的十六进制 ID,当附加到时间戳时,它是唯一的。我用大约 40 万条记录对此进行了测试,仅SELECT *在桌子上做一个就需要 15 秒以上。
在我以某种激烈的方式完全重新设计我的表之前,我想确保使用这个 PK(而不是自动递增INT)是我的性能下降的地方。除了常规INTPK(我是开发人员,不是 DBA)之外,我从未真正在表上工作过。
我正在使用 InnoDB 引擎和一些小表的一些 FK 关系。MySQL admin 显示表的数据长度约为 150MB,索引长度为 21MB,有 380k 行。
正如我所说,我是一名开发人员,而不是一名 DBA,但在我目前的情况下,我真的没有一个可以带来的人。我做了一些谷歌搜索,但发现了很多答案,这些答案通常只是深入研究主题向我提出了更多问题。我希望这里有人可以给出一个简洁的答案,或者至少为我指出更多的资源。
编辑:将列更改为CHAR(14)并删除了一个TEXT有点多余的大列。这似乎大大缩短了时间并将表大小减少到大约 80MB,但我仍在寻找建议。