V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
phpcxy
V2EX  ›  问与答

几千万条 access 数据库记录想用 PHP 来做数据检索系统,有什么好方案?

  •  1
     
  •   phpcxy · 2015-05-19 15:49:14 +08:00 · 2872 次点击
    这是一个创建于 3475 天前的主题,其中的信息可能已经有所发展或是发生改变。

    情况是这样的:
    1.有2009-2015的产品销售记录都保存在access里面的,每月一个mdb文件大概有400万条;
    2.每个表有50多个字段,没有做任何的外键关联的设计,例如省字段直接记录广东、市直接记录广州等等这样的形似;
    3.现在想做一个检索系统可以根据不同条件查询数据库记录,举例:查询2013年10月到2014年3月的某个产品型号某个厂家的销售记录;
    4.只在本地内网访问系统即可。

    目前的想法是:
    1.重新设计数据库表,规格、省市等等的做一个外键
    2.按照年份来分表
    3.用mysql保存

    但是遇到的困难是数据量比较大好像一般的机子都吃不消,很难说服客户去买高配点的服务器。
    性能也是比较成问题,刚才在开发环境(vagrant虚拟机 CentOS MySQL5.5 1G内存)上弄了100多W(没建索引)的数据做一下查询已经会出现time out了。

    所以想请教下,我这样的需求有没有更优的方案呢?

    7 条回复    2015-05-20 08:56:40 +08:00
    funky
        1
    funky  
       2015-05-19 15:52:38 +08:00   ❤️ 1
    用lucene
    mhycy
        2
    mhycy  
       2015-05-19 15:58:19 +08:00   ❤️ 1
    编写一个程序,用于把access数据库的数据导入到mysql,并支持按年增量添加数据
    用mysql查数据,建好索引,不用外键
    可考虑把省市区之类的中文记录变成一个map用id搜索
    yahoo21cn
        3
    yahoo21cn  
       2015-05-19 16:08:01 +08:00   ❤️ 1
    几千万条做个索引就行,一般的pc就能用,不索引啥机器都扛不住。
    zhenglee
        4
    zhenglee  
       2015-05-19 16:49:40 +08:00   ❤️ 1
    access -> mssql < - asp.net
    lvfujun
        5
    lvfujun  
       2015-05-19 17:11:35 +08:00   ❤️ 1
    @yahoo21cn 建索引+1
    建议按日期分表每5个月分一个表(怎么分自己决定).
    用检索算法可以参考快速排序法的思想写一个检索类.
    然后建索引.普通机器不说秒查吧.肯定不会慢.
    msg7086
        6
    msg7086  
       2015-05-19 23:07:30 +08:00 via Android
    不建索引硬搜?一定是钱太多用不完了…
    phpcxy
        7
    phpcxy  
    OP
       2015-05-20 08:56:40 +08:00
    现在想部署在一台linux机器上,发现linux读取access数据库挺麻烦的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2159 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:48 · PVG 08:48 · LAX 16:48 · JFK 19:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.