目前有个这样的问题,不知道如何简表查询效率最高:数据量很大,但是数据可以用如下的方式分层分类:
简单举例:省份(30多个)-> 一级分区点(5万多个)-> 二级分区点(100多个)-> 最终数据点(上万个)如何建表结构检索效率最高?
初学者,非常感谢大家!
简单举例:省份(30多个)-> 一级分区点(5万多个)-> 二级分区点(100多个)-> 最终数据点(上万个)如何建表结构检索效率最高?
初学者,非常感谢大家!
解决方案 »
- netbeans IDE中查看MySQL数据总是报错,在web项目中能检测到数据
- 找出两个表不一样的记录进行更新
- 如何快速从一个数据库的一个表复制到另一个数据库中的一个表?
- LOW_PRIORITY 的用法
- 求助,请问怎么查询数据表中大于当前时间的记录呢??
- 超笨的sql,高手进来批判下
- 同一台主机 mysql中 两个数据库间的复制
- Mysql+Myodbc,做管理系统,跨网络段,网络存取数据库效果不佳......,有做过的请帮忙
- mysql dump 数据时的错误信息?
- C# 中创建并执行MySQL存储过程
- mysql数据删除如何快速释放磁盘空间
- 【请教】关于mysql的character_set的问题
1. 按照文件名称,可以把文件分为30种类别,叫做“第一层类别”;
2. 每个文件有4万行数据,每行2列,第一列是“属性名称”,相当于4万个枚举类型数值,且前后顺序固定;第二列是1到100之间的整数。需求是:
当用户选择了某一个文件类别a和某一个属性名称b,以及某一个数值n时,可以把文件类别a中,所有的包含“属性名称b 数值n” 这一行的文件名都列出来;我的mysql表结构是这样:
按照文件名的30种类别,合并为8类,每类按照数值1到100分别建一个表,共800个表,每个表的记录是属性名和文件名;我主要的疑惑:
1. 我总觉得这样不是最优结构,担心将来检索速度太慢,但是总不能在mysql中存放几万个表吧?
2. 数据量太大,导入mysql很费时间,如果不用数据库,有没有更好的解决方案?比如lucens
因为检索系统是.net的,恳求各位高手多多指点,非常感谢大家!
create index xxx on x(第一层类别 ,属性名称 ,某一个数值 );
我现在按照您的建议,建了一张表,按照数值范围做rang分区,现在有个奇怪的问题:为了加快导入速度,我把每个文件对应的信息按照mysql中表的格式写在文件中,然后用load infile导入mysql:
public int loadFile2DB(string fileName)
{
MySqlConnection conn = new MySqlConnection(conStr);
conn.Open();
int flag = 0;
try
{
string infoQuery = "load data infile '" + fileName)+ "' into table infoall(class1, attribute, value);";
MySqlCommand cmd = new MySqlCommand(infoQuery, conn);
cmd.ExecuteNonQuery();
flag = 1;
}
catch (InvalidCastException e)
{
logger.logRecord("Load err: "+fileName );
} conn.Close();
return flag;
} 但是这个只循环到几百个文件,就会出现catch 中的Load err错误,我把程序停下来,直接用mysql命令导入也是可以的,或者重启程序再次导入也可以。我以前用同样方法,可以导入很多,是不是和mysql的响应时间有关?
有什么方法可以用程序持续的导入?几百个就手动重启程序太繁琐了,谢谢!
这是否与mysql的设置有关?
cmd.CommandTimeout = 90;//这个默认是30,改大一些,就可以了,
非常感谢各位!