30 回答
TA贡献1776条经验 获得超12个赞
如果这样横着拆会影响某些查询,也可以考虑竖着拆。如果有一些大字段的话,最好把大字段单独拆出一张表来,一般大字段只有查单条纪录的时候才会用到,拆出大字段后,源表的查询消耗io会减少很多
TA贡献1843条经验 获得超7个赞
建议主要考虑80%常用到的查询,剩余较少的查询条件使用到的字段,先不要建立索引,试一下吧。
在制造企业中100W+的数据表是很常见的。但索引要建到20多个的就少见了,
如果真得需要,建议使用覆盖索引。
TA贡献1869条经验 获得超4个赞
硬件允许的话 用两个数据库 做读写分离 可以有效的缓解问题。
或者不一定非得在数据库中解决所有问题吧 可以试试在程序中增加缓存层, 查询尽量在缓存中进行, 写入则让相应的缓存失效。
TA贡献1772条经验 获得超8个赞
有没有看看什么是瓶颈?磁盘IO ?CPU耗时? 最好在profile里面查看一下。
不知道你数据库的硬件配置,从这个数据量来看,数据文件和索引文件都很大,可能IO是瓶颈,考虑一下这部分数据是否可以放SSD硬盘,再增加内存,能缓解IO瓶颈。 这个是从硬件角度处理
还有,可以考虑调整某些字段。我的经验,字符型字段比较耗性能。如果有些字段存的是字符,但是这些字符又是标准的选项,那可以考虑将这字段换为int型,指向标准选项的索引。这个是从软件角度处理
再,你表的主键是啥类型?
TA贡献1801条经验 获得超16个赞
个人认为最开始的数据架构就没做好。
一个表放100W条数据,操作,查询都访问这个表肯定影响效率。最好是做分割。10W量级的为一个表(或者单独的数据库。)。那么100W数据就变成10个表来存储了。另外单独建立一个库 这个库只保存用户最索引ID 如 userid tableid .通过这个目录库来决定用户要访问和操作的的表。就是分布式管理,我语言表达差,就是这个意思。什么缓存都是浮云,缓存需要消耗大量的硬件资源的。
- 30 回答
- 0 关注
- 860 浏览
添加回答
举报