百万记录的库已经建立了索引但还是很慢,请问该如何解决呢?
我想请教大家一个问题
目前准备开发在线进销存软件,想为每一个注册用户分配一个数据库,但大家又说这样不合理
但是如果做成一个库的话,因为每个商家都有几千个产品,这样的话一个产品表的数据很容易就达到了上百万了,我测试了一下,虽然已经建立了索引和全文搜索,但是模糊搜索还是要花近10秒,实在无法接受,大家有什么好的建议吗
测试数据库是mysql 5.0
------解决方案--------------------多级索引。。
或者是你通过一些特征把数据拆成几块,比如按照用户的姓氏,分成几个数据库。分布在不同的数据库中。这样每个数据库的量就小很多了。
------解决方案--------------------想为每一个注册用户分配一个数据库???
不是吧....
我觉得有以下几点:
1.mysql不适合百万级的
2.检查下索引有没有起到作用,我之前做过测试,在mysql下建索引没起作用的,这事我也纳闷
------解决方案--------------------哈希 做下
估计没那么慢,
不行的话
1,换数据库
2,分割数据,多个数据库存放
------解决方案--------------------在指定查询条件的时候,先指定商家的条件,然后再写模糊查询的语句,形如:
select * from
(
select * from products where supplierID=@id
) a
where a.name like '%产品%'
------解决方案--------------------能否确定用户有多少?如果用户量不是太大,可以考虑比如每10个id建以个用户产品表,按照取模来区分,这样搜索id为9的用户的所有产品,可以搜索第一张用户产品表,搜索id为19的用户的产品,可以搜索第二张表。
另外需要注意的是Mysql在每个database里的表要在50个以内,否则效率下降很快。还有,Mysql单个表的数据量在200万以内是比较合适的,如果这个数量级的时候效率很低,就需要考虑是不是你的语句有问题。