Mysql 数据库 单表查询越来越慢,总数300w+

1.有唯一索引
2.查询总条数,耗时基本超过2min 以上
请教各位前辈大佬指点迷津,排除问题的方向,寻找解决方式。
原因可能是索引顺序引起的, 我修改了两个字段的顺序,查询时间明显改善
如下图:
图片说明
EXPLAIN 此表如下:
图片说明图片说明图片说明
查询时间为 : 0.6~2s+
由上查询很慢,可能是索引引起,但我无法确认与优化。

6个回答

你通过explain 查看下执行计划确定是什么地方慢,才好优化

baidu_28081035
家明君 回复: 已更新问题,上传图片
9 个月之前 回复
baidu_28081035
家明君 您好,可以请教一下具体看哪些参数,那个方向解决吗?我不是很懂这个
9 个月之前 回复

查看sql执行计划,是不是硬件设备不行呢

baidu_28081035
家明君 您好,可以请教一下具体看哪些参数,那个方向解决吗?我不是很懂这个,执行计划的参数 我已经上传图片
9 个月之前 回复

很难想象几十万数据,count要这么久啊
你试下直接select count(unique_key_id) from t;
看时间能不能减少,如果用上了索引,应该是非常快的

baidu_28081035
家明君 额,搞错了是300w+
9 个月之前 回复

使用Select count(1) from xx试试看

在《高性能mysql》一书中有提到,
当有多个索引时,mysql会对 SELECT COUNT(*) 进行优化,使用最适合的索引进行查询
楼主的表中只有一个复合索引?

baidu_28081035
家明君 目前建立了两个索引,gettime , 一个多字段唯一索引
8 个月之前 回复

count已经自己优化了,如果还慢只能你自己sql语句优化了
比如没有where直接max(id),有where 索引列再用count
再看看硬盘网络压力等等问题

baidu_28081035
家明君 io 读写压力 之类 我看了下 ,没有十分明显的问题。
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
数据库越来越大,越来越慢
不到一年,数据库容量已经到6G了,查询速度越来越慢,rnrn到底怎样设计好,能不能设计成这样,超过一年的时候自动换一个文件保存,查询的时候可以指定日期,rn例:rn2011的数据保存到 2011文件里rn2012的时候自动换到2012文件里rnrn查询的时候可以指定文件,比如我想查2011年的数据,可以直接在2011文件里查,这样速度就好一些
越来越慢
我的电脑是联想p4/1.5GB,系统是WIN2000 ADVANCE SERVER ,我在单位做一个网站(一个省内都能浏览)刚开始使用的时候速度很快,但是现在速度越来越慢了,以前别人下载速度都在100KB以上,现在有时出现超时,请问如何解决????rn机器关机然后重新开,速度就上去了,但是不能连续两天就慢了。
MySQL存储数据怎么越来越慢
建立了一个有35个数据项的表,每条数据是170字节,rn存储超过200条之后速度就明显慢了下来,300条左右时几乎就不能再存了,rn请问是需要设置什么吗
我的数据库为什么越来越慢?
1 sqlserverrn2 40000记录(带jpg图片)rn3 以前记录少时还可以rnrn各位有什么好建议?
系统的速度越来越慢
刚装了系统的时候网速很快,不过没过多久网速就越来越慢了?rn这是怎么了?中毒了吗?可是又没有检测到病毒。。。
程序执行越来越慢
通过OPENGL编写的魔方程序,键盘交互控制,越旋转,响应的速度越慢。所使用的内存不断上升,可能是什么问题呢?求教求教!!!
vs2008 越来越慢
vs2008 越来越慢 编译 运行一次要好久 我真是ri 了rnrn
分批插入数据越来越慢~~
就是把服务器的一个数据表读取后,然后插入到另外一个数据表。一共就是3千多万条数据,插入的数据表连索引什么的都没做,但插入的非常慢,前天用了15个小时还没导入成功,取消了。今天我用了循环分批导入(读取的表建立了一个时间索引,用时间分批导),开始速度还可以,后来导入越来越慢。2K多条数据要20多秒。rnrn请问下这个什么原因?
2000server系统越来越慢?
我的系统2000server+sql2000 rn一直做asp.net来的rn装个费尔防火墙和kv2004rn现在约来越慢rn怎么解决的好?rnrn还有 我看系统进程里有有好一个 svchost.exe 进程 rn这个进程做什么用的 谢谢rn
网站越来越慢
网站部署在WIN2003双核4G内存,是resin+postgresql+JSP(SSH)rn网站包含了大量(10万级到百万级)的写入数据库,(10万级到百万级-分页)读取数据库,少次数的修改(但是以一修改起来是10万级以上的)rn我的问题是,请问从什么方面可以进行优化,数据库定时清理,还是怎么样的?
为什么运行越来越慢?
下面是原代码,有一个按钮,点击按钮后另起一个线程执行一个耗时较长的操作,执行结果显示在文本框中。执行一次没什么问题,但是这样点击几次以后发现运行越来越慢,显示好像也不太正常了,不知道是什么原因,跟线程有什么关系没有?rnrnimport java.io.BufferedReader;rnimport java.io.InputStreamReader;rnrnimport org.eclipse.swt.SWT;rnimport org.eclipse.swt.layout.GridData;rnimport org.eclipse.swt.layout.GridLayout;rnimport org.eclipse.swt.graphics.Point;rnimport org.eclipse.swt.graphics.Rectangle;rnimport org.eclipse.swt.widgets.Button;rnimport org.eclipse.swt.widgets.Display;rnimport org.eclipse.swt.widgets.Shell;rnimport org.eclipse.swt.widgets.Label;rnimport org.eclipse.swt.widgets.Text;rnrnpublic class OffLinernrn private Shell sShell = null; // @jve:decl-index=0:visual-constraint="-9,9"rn private Button trace_check = null;rn private Text textArea = null;rnrn /**rn * This method initializes sShellrn */rn public void createSShell() rn sShell = new Shell();rn sShell.setText("Shell");rn sShell.setSize(new Point(489, 360));rn //sShell.setLayout(gridLayout);rn sShell.setVisible(true);rn sShell.setActive();rn final TatusTraceCheck traceCheckExe = new TatusTraceCheck();rn trace_check = new Button(sShell, SWT.NONE);rn trace_check.setBounds(new Rectangle(97, 287, 87, 36));rn trace_check.setText("Trace Check");rn trace_check.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() rn public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) rn Thread traceCheck = new Thread(traceCheckExe);rn traceCheck.setPriority(Thread.MAX_PRIORITY);rn traceCheck.start(); rn rn );rn textArea = new Text(sShell, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);rn textArea.setBounds(new Rectangle(1, 1, 479, 249));rn rnrn class TatusTraceCheck implements Runnable rn String stringInput=null;rn Process p;rn rn public void run()rn traceCheckStart();rn rn /**rn *This method is to move the new operation thread to UI thread using asyncExec mothod of “Display” classrn */rn private Boolean checkAsyncExec(Runnable r)rn Display display= Display.getDefault();rn if (!display.isDisposed())rn display.asyncExec(r);rn return true;rn rn else rn return false;rn rn rn rn private void traceCheckStart()rn try rn p=Runtime.getRuntime().exec("tatus");//this is an executive commandrn // Retrieve outputsrn BufferedReader stdInput=new BufferedReader(newrn InputStreamReader(p.getInputStream()));rn BufferedReader stdError=new BufferedReader(newrn InputStreamReader(p.getErrorStream()));rn // Trace outputsrn checkAsyncExec(new Runnable()rn public void run() rn textArea.setText("");rn rn );rn while (true)rn try rn if (p.exitValue()==0||p.exitValue()==1)rn checkAsyncExec(new Runnable()rn public void run() rn textArea.append("\n\nTrace check procedure finished!"); rn rn );rn break;rn rn rn catch(IllegalThreadStateException e) rn if(stdInput.ready()) rn while ((stringInput=stdInput.readLine())!=null) rn TraceManager.TrError(stringInput);rn checkAsyncExec(new Runnable()rn public void run() rn textArea.append(stringInput + "\n");rn rn );rn rn rn if(stdError.ready())rn while ((stringInput=stdError.readLine())!=null) rn TraceManager.TrError(stringInput);rn checkAsyncExec(new Runnable()rn public void run() rn textArea.append(stringInput + "\n");rn rn );rn rn rn continue;rn rn rn rn catch (Exception e) rn TraceManager.TrException(e);rn rn rn rnrnrn
机器速度越来越慢!!!
请各位大虾帮忙!rn最近,我的机器开机之后如果不进行任何操作,过一段时间(比如一两个小时,甚至十几分钟)他就好像死机了一样。但是如果我不停地用,不停的操作,这种现象就不会很明显,虽然也会慢一点,但基本当感觉不到。请问这是什么原因呢?你们谁碰到过这种情况呢?怎么办呢?我在线等着。rn
程序越来越慢?
一个网站。每秒会有10几个人点击,数据库操作很频繁。开始时很快,然后就越来越慢。半小时内点击几乎不延迟。等了两个小时候就延迟2,3秒了....然后越来越慢......再重新生成下,又不延迟了...rn 有哪些方面的原因??rn 有没有测试工具可已测到慢的原因??
2003,越来越慢???
我的2003,现在客户机在网络邻居中访问,越来越慢了。(打开共享文件夹需1~3分钟才能列出目录来)rn客户机是WIN98 , 有一台是XP,我应该怎样调整,是什么地方设置的不对?rnrnrn谢谢各位大侠了!!!rn ;)
关于电脑越来越慢..
我一台新电脑,不知为什么,我在联众进行网络游戏时,开始时电脑还挺快的,但大概一两个小时后,速度越来越慢,,重启后,又恢复正常....
VSS项目管理,越来越慢!
一直用VSS进行项目管理,但发现客户端签入签出项目越来越慢。。。。rnrnVSS服务器端基本上不受影响。。。rnrn不知大家是否知道其中的原因,讨论一下。。
sqlserver速度越来越慢?
各位前辈,我用vb编的程序 从数据库里查询数据,以前很快的,现在不仅启动慢,而且查询也越来越慢,除了数据量增加以外,是不是跟日志等有关系,应该怎么修改日志呀? 还有别的原因吗?rn多谢各位老师指导
电脑越来越慢怎么办?
电脑越来越慢怎么办? 为什么新装的系统使用时很流畅,用了一段时间发现越来越慢,特别是一些大型软件感觉会更更慢。 1、因为很多软件安装之后默认会随系统启动,占用了很多资源。 2、安装了很多小工具,虽然看着小但是在占用资源方面是惊人的。 3、软件都会产生临时文件,特别是大型软件,这些临时文件不及时清理时间长了也会影响电脑性能。 ...
2003,为什么越来越慢???
我的2003中,通过网络邻居访问网络中的共享文件夹,特慢(系统提示没有反应),但2~3分钟后文件夹被打开了,再继续打开还是这样,(领导喜欢看电影,这样对领导没法交待的),是什么原因造成的?在服务器上的网络邻居也是这样,但是通过我的电脑打开没问题。请大家把与之有关的原因给我说一下。
系统越来越慢怎么办??
我做了一套指纹考勤系统,进行三班考勤,机器长期不关闭,开机头几天,运行正常rn但第三天后系统开始变慢,而且系统时间也越来越慢,重起后都恢复正常,系统为98系统,请各位看一下有无好的办法解决??
tomcat 运行越来越慢
tomcat 运行越来越慢,重启一次变快,过两天有慢了,是不是连接池链接问题,请高手指点。rn连接池链接如下:rnrnpublic Connection getConnection()rn Connection conn=null;rn Context initContext = null;rn DataSource ds=null;rn try rn initContext = new InitialContext();rn if(initContext==null)rn throw new Exception("initialize the Context failed");rn ds =(DataSource)initContext.lookup("java:comp/env/jdbc/znps");rn if(ds==null)rn throw new Exception("datasource is null");rnrn conn = ds.getConnection();rn rn rn catch (NamingException e) rn System.out.println("getConnection NamingException:"+e);rn rn catch (SQLException e) rn System.out.println("getConnection SQLException:"+e);rn rn catch (Exception e) rn System.out.println("getConnection Exception:"+e);rn rn finally rn try rn initContext.close();rn rn catch (NamingException e) rn System.out.println("close Naming Exception:" + e);rn rn rn return conn;rn
Oracle越来越慢
为什么我的Oracle刚启动的时候速度还有那么快,过两个小时以后速度就变得很慢了呢?
请教mysql executeBatch 越来越慢的问题
从oracle向mysql批量写入数据,分月读取的,每次大约5千条左右,每1000条一提交,一共7万多数据。rn大致代码如下:rnwhile(rsOracle.next())rn ……rn stmtMysql.addBatch();rn if(c%1000==0)rn stmtMysql.executeBatch();rn connMysql.commit();rn rnrnstmtMysql.executeBatch();rnconnMysql.commit();rnrn第一个1000条用时7秒,然后就一点一点加,到导入7万数据时变成16秒1000条。rn然后紧接着突然变成1分05秒了,之后的几千条都是1分钟1000条。rn有没有懂得给说说吧,谢谢!!!rn
mysql一句sql查询速度越来越慢?
voice_file表有2000条数据,search_job_result表有250万条。rnrn[code=SQL]rnsqlString = "select v.voice_file_id,time_to_sec(v.duration) as duration, " +rn "v.audio_channel,v.create_time, s.confidence_score,s.phrase_id, " +rn "time_to_sec(s.start_time) as start_time, time_to_sec(s.end_time) as end_time " +rn "from (select confidence_score, phrase_id, start_time, end_time, voice_file_id " +rn "from search_job_result limit "+(j * 100000)+",100000"+") s, voice_file v where s.voice_file_id = v.voice_file_id";rn[/code]rn其中参数j是外层一个for循环的传入参数。即for(int j=0;j<25;j++).rnrn现在的问题是当j为10以内时,查询速度很快,而j数值越大时,查询速度越来越慢。大家能帮我分析其中的原因吗?
tomcat 越来越慢
tomcat 系统访问越来越慢,重启tomcat后,变快,过段时间就变慢了。是什么原因?
sybase数据库使用越来越慢
sybase数据库使用越来越慢,主要使用的3张表数据量分别达到5W、6W、13W,在组合查询数据时要用7秒时间,有点过长,超过等待限度,因为业务比较繁忙,而除了这3张数据量大的表,其他的表的相关处理速度还是很快的。其处理时间是和数据量成正比的,之前处理时间短点还可忍受。有没高手提供点处理办法,怎么减少其查询运行速度。
winform执行程序越来越慢
小弟刚刚接触winform的东西,用timer控件执行一个方法,去发送邮件,可是程序运行一段时间之后,就越来越慢,到最后不执行了。。。实在不知道问题出在哪。所以恳请高手帮帮忙,指点我这个菜鸟一下。。。万分感激。rnForm1_Load部分:rn[code=C#]rn private void Form1_Load(object sender, EventArgs e)rn rn System.Timers.Timer aTimer = new System.Timers.Timer();rnrn aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);rn // 设置引发事件的时间间隔 此处设置为1秒(1000毫秒)rn aTimer.AutoReset = true;rn aTimer.Interval = 60000;rn aTimer.Enabled = true;rn aTimer.Start();rn rn[/code]rn方法部分:rn[code=C#] private static void TimeEvent(object source, ElapsedEventArgs e)rn rnrnrn #region 每分钟查看数据库。rnrn string sql = "select * from EMS_System_Admin where e_system_admin_mark = 1 "rn + "select * from EMS_Email where e_email_state = 0 order by e_email_time desc "rn + "select e_mode_guid,e_mode_content,e_mode_name from EMS_Mode "rn + "select (select count(*) from EMS_Email where convert(char(19),EMS_Email.e_email_time,120) = convert(char(19),EMS_ERemind.e_eremind_sortime,120) and e_email_state = 0)st,(select count(*) from EMS_Email where e_email_state = 1 and convert(char(19),EMS_Email.e_email_time,120) = convert(char(19),EMS_ERemind.e_eremind_sortime,120))success,(select count(*) from EMS_Email where e_email_state = 2 and convert(char(19),EMS_Email.e_email_time,120) = convert(char(19),EMS_ERemind.e_eremind_sortime,120))failure,(select top 1 e_email_sort from EMS_Email where convert(char(19),EMS_Email.e_email_time,120) = convert(char(19),EMS_ERemind.e_eremind_sortime,120))sort,(select top 1 e_email_project from EMS_Email where convert(char(19),EMS_Email.e_email_time,120) = convert(char(19),EMS_ERemind.e_eremind_sortime,120))project,* from EMS_ERemind";rnrnrn DataSet DS = MiracleEMS.DataBase.SqlHelper.DS(sql, null);rnrn DataTable dt = DS.Tables[0];rn DataTable dt1 = DS.Tables[1];rnrn DataTable dt2 = DS.Tables[2];rn DataTable dt3 = DS.Tables[3];rnrnrn string[] arrEmail = new string[] "12345678@qq.com" ;rn string strEmailTime = "";rnrn string strSort = "";rn string strProject = "";rn int intCount = dt1.Rows.Count;rn int r = 0;rn string strMode = "";rn string strModeTitle = "";rn foreach (DataRow dr in dt.Rows)rn rn r = 0;rn foreach (DataRow dr1 in dt1.Rows)rn rn if (dr["e_system_admin_guid"].ToString().ToLower() == dr1["e_email_oper"].ToString().ToLower())rn rn if (r < 3)rn rn r = r + 1;rn arrEmail = new string[] dr1["e_email_email"].ToString() ;rnrn tryrn rn foreach (DataRow dr3 in dt2.Rows)rn rnrn if (dr1["e_email_begin"].ToString() == "")rn rn if (dr1["e_email_mode"].ToString() == dr3["e_mode_guid"].ToString())rn rn tryrn rn if (dr["e_system_admin_email"] != null && arrEmail != null)rn rn if (BaseDo.SendEmail(dr["e_system_admin_email"].ToString(), dr["e_system_admin_name"].ToString(), arrEmail, dr3["e_mode_content"].ToString().Replace("XXX", dr1["e_email_name"].ToString()).Replace("E_Email_Email", dr1["e_email_email"].ToString()), dr3["e_mode_name"].ToString(), dr["e_system_admin_server"].ToString(), dr["e_system_admin_mailpwd"].ToString()))rn rn MiracleEMS.DataBase.SqlHelper.SqlCmd("Update EMS_Email set e_email_state = 1 where e_email_guid='" + dr1["e_email_guid"].ToString() + "'", null);rn rn elsern rn MiracleEMS.DataBase.SqlHelper.SqlCmd("Update EMS_Email set e_email_state = 2 where e_email_guid='" + dr1["e_email_guid"].ToString() + "'", null);rn rn rn rn catchrn rn MiracleEMS.DataBase.SqlHelper.SqlCmd("Update EMS_Email set e_email_state = 2 where e_email_guid='" + dr1["e_email_guid"].ToString() + "'", null);rn rnrn rn rn elsern rnrn rn rnrn rn catchrn rn continue;rn rn rn elsern rn continue;rn rn rnrn rn r = 0;rn arrEmail = new string[] dr["e_system_admin_email"].ToString() ;rn rnrn dt3 = DS.Tables[3];rn foreach (DataRow drs in dt3.Rows)rn rn if (int.Parse(drs["st"].ToString()) == 0)rn rnrn if (MiracleEMS.DataBase.SqlHelper.ExecuteNonQuery("declare @s int set @s = (select count(*) from EMS_Email where e_email_state = 1 and convert(char(19),EMS_Email.e_email_time,120) = '" + string.Format("0:yyyy-MM-dd HH:mm:ss", drs["e_eremind_sortime"]) + "') declare @f int set @f =(select count(*) from EMS_Email where e_email_state = 2 and convert(char(19),EMS_Email.e_email_time,120) = '" + string.Format("0:yyyy-MM-dd HH:mm:ss", drs["e_eremind_sortime"]) + "') declare @i int set @i = (select count(*) from EMS_Count where e_count_sortime = '" + string.Format("0:yyyy-MM-dd HH:mm:ss", drs["e_eremind_sortime"]) + "') if @i < 1 begin Insert Into EMS_Count(e_count_success,e_count_failure,e_count_sortime,e_count_sort,e_count_project) values(@s,@f,'" + drs["e_eremind_sortime"].ToString() + "','" + drs["sort"].ToString() + "','" + drs["project"].ToString() + "') end") > 0)rn rn BaseDo.SendEmail("miracle.sun@imforce.com.cn", "您在" + drs["e_eremind_sortime"].ToString() + "的时间导入的Email发送完成", arrEmail, "成功数:" + drs["success"].ToString() + " 失败数:" + drs["failure"].ToString(), "您在" + drs["e_eremind_sortime"].ToString() + "的时间导入的Email发送完成", "mail.imforce.com.cn", "12345678");rn rn rn rnrn [/code]rn
急:Eclipse越来越慢
在使用过程中,只要save或者使用快捷键,将导致Eclipse不响应,需要等待一段时间rnrn严重影响效率,有什么办法解决?
表查询速度越来越慢???
rn在我使用的过程中发现数据表刚开始运行很快,但越来越慢,表记录我按月进行转存,记录数保持在2万条左右,rnrn各位高手,问题发生在那,怎么处理???rnrn先行谢过!!
2000系统越来越慢
我的系统2000server+sql2000 rn一直做asp.net来的rn装个费尔防火墙和kv2004rn现在约来越慢rn怎么解决的好?rnrn还有 我看系统进程里有有好多个 svchost.exe 进程 rn这个进程做什么用的 谢谢rn
为什么我的数据库打开越来越慢?
硬件:rncr2.0rn845ernst80grnhy256rnrn系统 2000server+sql2000 以前做asp 现在做.net (刚学)rnkv2004+费尔防火墙 没发现病毒rn可现在我的数据库打开约来越慢了,连打开个表都需要半天rn怎么回事情 ?难道说 sql用时间长了 也要“清理”?rn谢谢
请教 为什么数据库会越来越慢
初使oracle rn为什么程序跑到7000多条记录的时候,数据库处理速度明显的慢下来。rn有什么地方需要调整参数吗?rnrnrn
数据库连接数居高不下,导致系统越来越慢
前段时间,公司系统突然异常缓慢,通过阿里云监控看到连接数突然陡增,并且不释放,以下是我们的处理步骤:1、通过阿里云提供的监控日志查询是CPU过高,还是连接数过高导致的。2、CPU过高可能与读写操作过高有关,我们是连接数过高导致的。3、是否有程序发送大量的情况,频繁请求数据库导致连接数过高?不是4、检查慢SQL是否过多,导致很多链接时间过长,导致链接不释放。这里可以通过show PROCESSLIS...
数据库越来越慢,问题出在何处?
请各高手帮助!谢了先!!
struts+spring+hibernate 操作据越来越慢
操作数据库的类都是继承 HibernateDaoSupport 类 的 getHibernateTemplate rnrn方法都是这样写的rn[code=Java]rnpublic boolean isInsertSmallLayout(SmallLayout sl) rn rn boolean b = true;rn try rn this.getHibernateTemplate().save(sl);rn catch (Exception e) rn b = false;rn e.printStackTrace();rn rn return b;rn rn[/code]rngetHibernateTemplate 会自动关闭session 吗?rn用netstat -an 查看连接状态 发现N多个访问数据库的连接没有断开rn就证明访问数据库后 没有断开连接rnrn这是什么情况啊
oracle 数据插入越来越慢
刚开始数据插入非常的快,当表中数据量比较大则速度变得越来越慢
我的程序为什么越来越慢?
写了个程序,破解密码的,其中用到了反复循环去测试密码的正确与否,rn程序运行起来后,破解的速度越来越慢,CPU占用率和内存没有变化,rn感觉可能算法实现有问题,后用汇编写了一遍,依然如此,rn哪位知道这类问题的原因出在什么地方吗?rn多谢
C#winform读取和写入文件越来越慢
[size=16px][b]1.楼主是非计算机专业出身,C#学的非常浅,目前就用winform做小工具rn2.我做了个Hex文件转Bin文件的小工具,以下是转换部分的源码rn3.第一次运行没有问题,Hex文件成功的转换成了Bin文件,但是此时接着转换(还是用原来的Hex文件,Bin文件名也不变,理论上应该覆盖,但是这里并没有覆盖。而是追加到之前的Bin文件末尾???),这一次速度变慢了,每重复一次,速度就变慢一些,而且bin文件一直翻倍,并没有覆盖,同时Hex文件读取速度也越来越慢??? 但是如果关掉程序,重新运行,又好了,bin文件就被覆盖了,但是接着运行依然是刚才越来越慢的情况???rn4.总结就是 每次转换都要重新运行程序才能进行下一次转换,否则Bin文件是追加而不是覆盖,而且速度越来越慢??[/b][/size]rn[code=csharp] private void Change()rn rn if (textBox1.Text != "")rn rn if (textBox2.Text != "")rn rn this.Invoke(new EventHandler(delegatern rn this.Text = "Hex转Bin小工具(正在读取Hex,请稍等...)";rn button2.Enabled = false;//失能转换按钮rn button1.Enabled = false;//Hex文件锁定rn button3.Enabled = false;//bin文件锁定rn ));rn rn tryrn rn StreamReader HexReader = new StreamReader(file.FileName);rnrn while (true)rn rn string szLine = HexReader.ReadLine(); //读取一行数据rn if (szLine == null) //读完所有行rn rn HexReader.Close(); rn break;rn rn if (szLine.Substring(0, 1) == ":") //判断第1字符是否是:rn rn if (szLine.Substring(1, 8) == "00000001")//数据结束rn rn this.Invoke(new EventHandler(delegatern rn this.Text = "Hex转Bin小工具(Hex读取成功)"; rn )); rn HexReader.Close(); rn break;rn rn if (szLine.Substring(1, 1) == "1" || (szLine.Substring(3, 4) != "0000" && szLine.Substring(1, 1) == "0"))rn rn szHex += szLine.Substring(9, szLine.Length - 11); //读取有效字符:后0和1rn rn rn rn rn catchrn rn Int32 i;rn Int32 j = 0;rn Int32 Length = szHex.Length;rn byte[] szBin = new byte[Length / 2];rn for (i = 0; i < Length; i += 2) //两字符合并成一个16进制字节rn rn szBin[j] = (byte)Int16.Parse(szHex.Substring(i, 2), NumberStyles.HexNumber);rn j++;rn rn tryrn rn FileStream fs = new FileStream(Savefile.FileName, FileMode.Create); rn //FileStream fs =File.Create(foldPath); rn BinaryWriter bw = new BinaryWriter(fs);rn this.Invoke(new EventHandler(delegatern rn this.Text = "Hex转Bin小工具(已转换0%)";rnrn ));rn for (int k = 0; k < j; k++)rn rn bw.Write(szBin[k]);rn this.Invoke(new EventHandler(delegatern rn this.Text = "Hex转Bin小工具(已转换" + ((int)(((float)k / (float)j) * 100)).ToString() + "%)";rn ));rn rn bw.Close();rn fs.Close(); rn this.Invoke(new EventHandler(delegatern rn button3.Enabled = true;//可以重新选择bin文件rn button2.Enabled = true;//使能转换按钮rn button1.Enabled = true;//可以重新选择hex文件 rn )); rn MessageBox.Show("转换完成", "提示"); rn rn catchrn rn rn elsern rn MessageBox.Show("请选择bin文件保存路径", "提示"); rn rn rn elsern rn MessageBox.Show("请选择一个Hex文件", "提示");rn rn [/code]
jdbc 批量操作 更新越来越慢
现在我有这样一个批量操作sql的方法,因为sql语句已经预先写入sql脚本rn所以这个方法是将sql脚本文件中的sql语句读入list集合,rn测试时list中只存入1条记录,发现之前执行很快几毫秒就执行完一条,但是一旦到7328条记录开始,每条执行时间为10多秒rn[code=java]rnpublic void batchExcuteSQLFile(List sqlList)throws Exception rn DataSource ds=null;rn Connection conn = null;rn Statement stmt = null;rn try rn ds=(DataSource) SpringContextUtil.getBean("dataSource");rn conn = ds.getConnection();rn stmt = conn.createStatement();rn conn.setAutoCommit(false);rn for (int i = 0; i < sqlList.size(); i++) rn stmt.addBatch(sqlList.get(i));rn rn Date s=new Date();rn stmt.executeBatch();rn stmt.clearBatch();rn Date e=new Date();rn System.out.println(e.getTime()-s.getTime());rn conn.commit();rn conn.setAutoCommit(true);rn catch (SQLException e) rn logger.error("batchExcuteSQL失败。",e);rn try rn conn.rollback();rn conn.setAutoCommit(true);rn catch (SQLException e1) rn logger.error("batchExcuteSQL失败。",e1);rn throw new TaskMissionException(e.getMessage());rn rn throw new TaskMissionException(e.getMessage());rn catch (Exception e) rn throw new Exception(e);rn finally rn try rn if(stmt!=null)rn stmt.close();rn rn DataSourceUtils.releaseConnection(conn,ds); rn catch (Exception e) rn logger.error("batchExcuteSQLFile失败。",e);rn throw new TaskMissionException(e.getMessage());rn rnrn rn rn[/code]rnrn这是什么原因导致?
网速越来越慢,怎么回事?急需解决。
我电脑开机后网络速度很快的,后来越来越慢,直到断线。怎么回事呢?
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池