扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
百万记录的库已经建立了索引但还是很慢,请问该如何解决?
我想请教大家一个问题
目前准备开发在线进销存软件,想为每一个注册用户分配一个数据库,但大家又说这样不合理
但是如果做成一个库的话,因为每个商家都有几千个产品,这样的话一个产品表的数据很容易就达到了上百万了,我测试了一下,虽然已经建立了索引和全文搜索,但是模糊搜索还是要花近10秒,实在无法接受,大家有什么好的建议吗
测试数据库是mysql 5.0
多级索引。。 或者是你通过一些特征把数据拆成几块,比如按照用户的姓氏,分成几个数据库。分布在不同的数据库中。这样每个数据库的量就小很多了。 |
多级索引。或者是你通过一些特征把数据拆成几块,比如按照用户的姓氏,分成几个数据库。分布在不同的数据库中。这样每个数据库的量就小很多了。
1000K左右的表,ACCESS这种桌面型的数据库,都不会慢得非常慢.(前提是索引用得到) 这个数量的记录,如果非常慢。一般是SQL语句有问题 //我不懂MYSQL,但各种数据库基本的原则是一致的.按你的说明,因为你用的模糊查询,基于这种的SQL,基本上,在信息描述/名称等上的索引,建了也是用不上的. 因为你一般会 where cargo_desc like '%我要找的东西%'. %号在前,基本上DBMS没法用索引了.(除非一些非常非常特殊的设置)就算是1000万的硬件配置,该不快的还是快不了
------------------------------------------------
你肯定有"商家"这样的字段 .
你需要在这个字段上加索引,同时你的SQL需要故意引导DBMS使用到这个索引,可以一上来就过滤剩下几K条记录了.
要留意,这个字段的条件,不应当使用类似
where "商家" like "%123%" //但用 "商家" like '123%' 一般会用上
或,你也不可以使用
where trim("商家") = "abc" //除非数据库有装门的设置,否则字段在函数中是用不上索引的,因为DBMS要每条记录帮你算一次才知道符不符合条件.
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者