大家好.
我想使用mysql数据库保存工厂的MAC号,大概有几十万个.它是以一个文本(licenses)文件,每个大小为672byte,文件名为MAC号,文件内容包含一个MAC号(与文件名相同)和对应SN号.
我想建两个字段:MAC号与licenses(用于保存内容),前用作索引,当知道MAC时,可以反查SN号.相反也可以.且也可以另存licenses文件到本地重新使用.create table mac
( mac_id mediumint unsigned not null auto_increment primary key,
  mac_eth char(12) not null ,
  mac_license varchar(750) not null,
  mac_date date not null,
  unique eth_index (mac_eth),
  unique license_index (mac_license)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
问题一:
我上面建的表是否可行?或者怎么优化?
问题二:
由于这几十万MAC号,对应几个机型(licenses文件格式一样,内容有差异).统一保存在一个表好,还是根据机型建多个表来保存这些MAC号好呢? 如果新建几个表来保存,PHP代码实现上传保存会不会麻烦?

解决方案 »

  1.   

    1.unique eth_index (mac_eth),是何意?你未注释,看看是否与 id合并成一个
    date只能包含日期,建议使用datetime或int保存日期戳
    2.当然一个表。
      

  2.   

    1 可行
    2 一个表吧  加个type字段就行
      

  3.   


    mac_eth字段用来保存MAC号,我也想给它创建单独索引,方便查找. 
    由于mac_eth(MAC号)是唯一,不知道在这里是否还需要建ID字段,如果建了有什么好处,我还不清楚.呵呵由于多个机种,需要按rucypll意思添加字段type区别机型.
      

  4.   

    可以尝试直接mac_eth作主键,如果没有别的特殊需求的话。
    其它的没什么需要改动的
      

  5.   

    顺便问各位大牛,
    我的需求是PHP上传,直接读取压缩包(tar.gz, zip等)里面的文件名及内容, 然后保存到数据库. 程序执行完后,压缩包自动删除. 请问如何实现啊? 谢谢.
    我使用这个解压
    try {
        $phar = new PharData($uploadDir.'/'.'licenses.tar.gz');
        $phar->extractTo($uploadDir.'/'); // extract all files} catch (Exception $e) {
    echo $e;
        die(); // handle errors
    } 但不知道如何使用PharData来直接读取内容,而不需要解压到目录再读取.