内网连接数据库
有一张表user。里面的字段有:
ID,Userid,UserName,Level,Info.....
数据有:
1,1,abc,1,abc...
1,2,efc,20,ccc...
2,3,kkk,55,llll..
2,4,adkd,33,kii..
2,5,iiao,23,kol..
3,6,lli,44,wodkll..
要现在有20万个ID,这个ID对于的是user表中的ID
现在要查询这些ID里面的Level和Info
我现在的连接数据的方法:
public static readonly string CONN_STRING = System.Configuration.ConfigurationSettings.AppSettings["db"];
#region ExecuteReader
public static MySqlDataReader ExecuteReader(string cmdText)
{
return ExecuteReader(cmdText, null);
}
public static MySqlDataReader ExecuteReader(string cmdText, params MySqlParameter[] cmdParams)
{
MySqlConnection conn = new MySqlConnection(CONN_STRING);
MySqlCommand comm = PrepareCommand(null, conn, cmdText, cmdParams);
comm.CommandTimeout = 8000;
MySqlDataReader dr = comm.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
comm.Parameters.Clear();
return dr;
}
#endregion
如果20万个ID一起查的话,好慢呀。我等了半天还没好。而且页面容易死掉。。
请问有什么有效率的方法可以查出这些内容吗?
请各位大大帮帮忙啦。。谢谢。。分不够我还可以加。。
12 个解决方案
#1
补充。User表中的数据也很多
1个ID可以对应几条数据,甚至几十条数据。。
1个ID可以对应几条数据,甚至几十条数据。。
#2
建索引没有?20w也不是太多...
#3
你的20万ID从哪来的,如果也是库里另外表的,建议联查
#4
恩。我都建了索引。还是很慢
#5
用DataTable查询呀,返回一个DataTable,这样比较快一点!
#6
20W的ID是我预先查询出来的。是别的地方的。我放在txt文件里。
进行查询前会先读取txt文件里面的ID,这个应该不影响数据库操作方面。
因为在数据库操作前已经全部读取完ID了。。
进行查询前会先读取txt文件里面的ID,这个应该不影响数据库操作方面。
因为在数据库操作前已经全部读取完ID了。。
#7
我现在的方法是一个ID一个ID的查询
有什么方法可以一起查询出来?而且效率高一点?
有什么方法可以一起查询出来?而且效率高一点?
#8
建立聚集索引
#9
去研究下数据库优化的东西吧
20W其实不是很多
20W其实不是很多
#10
不知道你别的地方是什么地方,如果你的两台数据库服务器在统一网段,MSSQL可以用opendatasource oracle可以用dblink联查!
如果你读TXT方式,只能一个一个查,你也可以读一批用id in(....)的方式查,但这样SQL执行效率是不会提高的,可以提高点你程序的效率
#11
。。。我现在的Sql是:
这个可以进行修改吗?
还是要改连接数据库的方法?
聚集索引。。。
我去看下。。
select info,level from user where id=?id;
这个可以进行修改吗?
还是要改连接数据库的方法?
聚集索引。。。
我去看下。。
#12
mysql 有聚集索引吗?
#1
补充。User表中的数据也很多
1个ID可以对应几条数据,甚至几十条数据。。
1个ID可以对应几条数据,甚至几十条数据。。
#2
建索引没有?20w也不是太多...
#3
你的20万ID从哪来的,如果也是库里另外表的,建议联查
#4
恩。我都建了索引。还是很慢
#5
用DataTable查询呀,返回一个DataTable,这样比较快一点!
#6
20W的ID是我预先查询出来的。是别的地方的。我放在txt文件里。
进行查询前会先读取txt文件里面的ID,这个应该不影响数据库操作方面。
因为在数据库操作前已经全部读取完ID了。。
进行查询前会先读取txt文件里面的ID,这个应该不影响数据库操作方面。
因为在数据库操作前已经全部读取完ID了。。
#7
我现在的方法是一个ID一个ID的查询
有什么方法可以一起查询出来?而且效率高一点?
有什么方法可以一起查询出来?而且效率高一点?
#8
建立聚集索引
#9
去研究下数据库优化的东西吧
20W其实不是很多
20W其实不是很多
#10
不知道你别的地方是什么地方,如果你的两台数据库服务器在统一网段,MSSQL可以用opendatasource oracle可以用dblink联查!
如果你读TXT方式,只能一个一个查,你也可以读一批用id in(....)的方式查,但这样SQL执行效率是不会提高的,可以提高点你程序的效率
#11
。。。我现在的Sql是:
这个可以进行修改吗?
还是要改连接数据库的方法?
聚集索引。。。
我去看下。。
select info,level from user where id=?id;
这个可以进行修改吗?
还是要改连接数据库的方法?
聚集索引。。。
我去看下。。
#12
mysql 有聚集索引吗?