SQL语句如下:SELECT DISTINCT
dbo.out_message.content AS content, dbo.out_message.datime, dbo.out_message.id as id,out_message.a_id,
dbo.out_message.type_name, dbo.message_ku.name, dbo.message_ku.state,
dbo.message_ku.shenhe_name, dbo.message_ku.send_name,
case when len(user_pho)=11 then user_pho else substring(dbo.out_message.user_pho,3,11) end as user_pho
FROM dbo.message_ku INNER JOIN
dbo.out_message ON dbo.message_ku.content = dbo.out_message.content
WHERE (dbo.message_ku.state = '0')
数据近一亿条,请问应该如何修改才能解决超时的问题?
dbo.out_message.content AS content, dbo.out_message.datime, dbo.out_message.id as id,out_message.a_id,
dbo.out_message.type_name, dbo.message_ku.name, dbo.message_ku.state,
dbo.message_ku.shenhe_name, dbo.message_ku.send_name,
case when len(user_pho)=11 then user_pho else substring(dbo.out_message.user_pho,3,11) end as user_pho
FROM dbo.message_ku INNER JOIN
dbo.out_message ON dbo.message_ku.content = dbo.out_message.content
WHERE (dbo.message_ku.state = '0')
数据近一亿条,请问应该如何修改才能解决超时的问题?
解决方案 »
- 关于上传解压文件 返回文件目录url
- 怎么获取不到上传的文件???``````````
- 新手问题
- 在我开发自定义的服务器控件时,怎么在里面使用JAVASCRIPT?急。。。。。。。
- WEB控件显示问题,高手请进,急!!!
- 请问:数据导出到excel的问题,excel中包含控件
- 有人用ASP.NET Web Matrix 吗?
- 如何使用户在登记过程中无法后退?
- ###50分请教做过datagrid模板列的朋友,,在.cs中生成datagrid中TemplateColumn模板列的朋友一个问题,关于生成radio的问题,
- 内存问题
- 散分 我的百度空间请大家支持 http://hi.baidu.com/ajaxchen_615/space
- 页面生存期和 判断
2 增加索引,对于查询中常用的条件字段添加索引
3 优化查询,这个我不是很专业,猜测假如你用两次查询1 首先根据条件过滤记录只有(select on where) 2 根据记录进行换值处理(select case when),这样也许会快点。
1.在企业管理器中,选择菜单上的"工具",再选择"选项";
2.在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡;
3.在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字查询分析器中的设置:
单击“工具”->"选项"->"连接"; 将登录超时设置为一个较大的数字,连接超时改为0。 查询语句:
创建\使用合适的索引有可能得话,可以增加内存。
错误如下:没有访问日志文件的权限!或日志文件只读!RunSqlGetID函数出现错误。
错误信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应。
查询语句: select count(1) from viewSend where type_name='广东'
你自己说了你是1y条数据
而你的sql语句会进行表连接,然后每条记录进行比对,同时还要替换字符串,几条数据还没什么,但是你那么大的数据量就肯定不行,所以你需要进行缩减数据量,比如每次只查询20条数据,并且你查询这么多,真正显示到前台被有效使用的有几条了?
你说得不错
本来就用不到这些多数据,但是需求中就是要显示这么多数据出来!
这个程序是以前同事写的.
我在想,如果把这些数据写进一个名为history表里,再进行查询,不知道还会不会产生这样的问题呢?平时在向这两个表里写进数据时也向history表里写进数据!
大家让为这样子行不行得通?
dbo.out_message.content AS content, dbo.out_message.datime, dbo.out_message.id as id,out_message.a_id,
dbo.out_message.type_name, dbo.message_ku.name, dbo.message_ku.state,
dbo.message_ku.shenhe_name, dbo.message_ku.send_name,
case when len(user_pho)=11 then user_pho else substring(dbo.out_message.user_pho,3,11) end as user_pho
FROM dbo.message_ku INNER JOIN
dbo.out_message ON dbo.message_ku.content = dbo.out_message.content
WHERE (dbo.message_ku.state = '0') 查询出来的记录写histroy,以供前台查询这程序是有进行了分页,分页中的数据用视图查询出来
视图内容就是上面的SQL查询语句
至于查询优化什么的前面貌似有很多人已经说了。
dbo.out_message.content AS content, dbo.out_message.datime, dbo.out_message.id as id,out_message.a_id,
dbo.out_message.type_name, dbo.message_ku.name, dbo.message_ku.state,
dbo.message_ku.shenhe_name, dbo.message_ku.send_name,
case when len(user_pho)=11 then user_pho else substring(dbo.out_message.user_pho,3,11) end as user_pho
FROM dbo.message_ku INNER JOIN
dbo.out_message ON dbo.message_ku.content = dbo.out_message.content
WHERE (dbo.message_ku.state = '0') 真是有水平的sql不但用DISTINCT 还有case when len(user_pho)=11 then user_pho else substring(dbo.out_message.user_pho,3,11) end
不要说1Y条,我看就是100w条,都够呛.这样的情况,一般根据实际的应用情况采取其他的机制去间接处理.比如如果实时性不高,可以把查询出来的结果,保存存在一个结果表中.页面上的现实直接读结果表.然后根据你们的需要建立sql job 定时更新结果表.另外,这个sql写的,真的让人觉得,在数据量大的情况下,这就是一个根本不可能执行出来的东西..
尝试,在存储过程中用写循环,临时表之类的方法,去一步一步得到你想用要的结果.这样下来也不至于到超时,或者死锁数据库什么的.在大数据量下直接写和执行这样sql的程序员,应该被枪毙!另外,上面说的什么分页储存过程的人,我看就根本没有仔细看你的sql.也是一些瞎JB扯蛋的家伙.
估计他们根本不明白也没有做过实际的大数据量的真实操作.那么他们应该更不明白在大数据量下
有多表关联合查询或者视图下的分页算法了.
dbo.out_message.content AS content, dbo.out_message.datime, dbo.out_message.id as id,out_message.a_id,
dbo.out_message.type_name, dbo.message_ku.name, dbo.message_ku.state,
dbo.message_ku.shenhe_name, dbo.message_ku.send_name,
case when len(user_pho)=11 then user_pho else substring(dbo.out_message.user_pho,3,11) end as user_pho
FROM dbo.message_ku INNER JOIN
dbo.out_message ON dbo.message_ku.content = dbo.out_message.content
WHERE (dbo.message_ku.state = '0') 真是有水平的sql不但用DISTINCT 还有case when len(user_pho)=11 then user_pho else substring(dbo.out_message.user_pho,3,11) end
不要说1Y条,我看就是100w条,都够呛.这样的情况,一般根据实际的应用情况采取其他的机制去间接处理.比如如果实时性不高,可以把查询出来的结果,保存存在一个结果表中.页面上的现实直接读结果表.然后根据你们的需要建立sql job 定时更新结果表.另外,这个sql写的,真的让人觉得,在数据量大的情况下,这就是一个根本不可能执行出来的东西..
尝试,在存储过程中用写循环,临时表之类的方法,去一步一步得到你想用要的结果.这样下来也不至于到超时,或者死锁数据库什么的.在大数据量下直接写和执行这样sql的程序员,应该被枪毙!另外,上面说的什么分页储存过程的人,我看就根本没有仔细看你的sql.也是一些瞎JB扯蛋的家伙.
估计他们根本不明白也没有做过实际的大数据量的真实操作.那么他们应该更不明白在大数据量下
有多表关联合查询或者视图下的分页算法了.
非常谢谢你的提醒
我的想法也是建一个表,进行更新,相信这样子会快很多
分页控件没有错,错的是用SQL语句生成
我马上去改下!
如果成功马上结了
但时效性不太好,只好写个计划了