求一个高难度的表查询优化方法,可能更本就无法优化~~~

架构之路 2005-11-24 02:35:44
表结构
字段名称 字段说明 数据类型 可空 缺省 备注
Dwbm 单位编码 Nvarchar 12 N ‘’
Bmmc 部门名称 Nvarchar 20 N ‘’
Rybm 人员编码 Varchar 30 N ‘’ PK
B001 工资项1 Decimal 9 Y 0
B002 工资项2 Decimal 9 Y 0

B089 工资项89 Decimal 9 Y 0
B090 工资项90 Decimal 9 Y 0
Yfx 应发项 Decimal 9 Y 0
Sds 所得税 Decimal 9 Y 0
Kfx 扣发项 Decimal 9 Y 0
Sfx 实发项 Decimal 9 Y 0
Rq 日期 Nvarchar 10 Y PK
Gzlb 工资类别 Nvarchar 1 Y ‘’
Gzxz 工资性质 Nvarchar 1 N ‘0’
Xgbj 修改标记 Nvarchar 1 N ‘0’ PK
====================================================
此表中有100个左右的字段,8W多条数据,我在查询分析器中 SELECT * 一下要2分多钟的时间,在程序代码中执行查询的时候就超时,报错了,程序无法执行。我加过(Rybm,Rq,Xgbj)这三个字段为索引,但依旧无法提高效率。想使用分页查询,但表中无唯一的字段,Rybm+Rq 可以组成唯一的字段。

不知道当时建表人如何考虑的,这个表还有救吗?


...全文
181 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
swordmanli 2006-01-02
  • 打赏
  • 举报
回复
http://www.blog.com.cn/user25/lijunyi/archives/2005/213533.shtml
bugchen888 2005-11-25
  • 打赏
  • 举报
回复
数据的导入导出最好设计为定时自动跑的Job.
iamltd 2005-11-25
  • 打赏
  • 举报
回复
主要就把索引改一下吧
考虑where的字段顺序来建索引,如果顺序不一样,建再多的索引也不会有优化作用的。
ReViSion 2005-11-24
  • 打赏
  • 举报
回复
我想楼上的查询条件是不是日期,
如果是日期的话,则索引的顺序如果改为Rq+Rybm

但如果是找出所有数据,那么根本没办法
架构之路 2005-11-24
  • 打赏
  • 举报
回复
继续
duoluohuifeng 2005-11-24
  • 打赏
  • 举报
回复
在企业管理器中导把
Baby_Happy 2005-11-24
  • 打赏
  • 举报
回复
用字段名代替*,即使多也要一个一个将字段名敲出来,这样是会比你用* 快一些的
x_gn 2005-11-24
  • 打赏
  • 举报
回复
可以自己添加一个自增字段(看需要可以设置成主键)哇? 那样你就可以分页处理了
余下....
架构之路 2005-11-24
  • 打赏
  • 举报
回复
晕,看来是没有办法了
jin2005 2005-11-24
  • 打赏
  • 举报
回复
路过这里,说一下我的看法:
一 建立适当的索引,可有助于提高查询速度
二 在where后,尽量将能去掉多数记录的条件放在前面,并尽量减少模糊查询,如like '%...%'
三 如果查询字段很多,不要怕麻烦,尽量将需要的字段列出来(这个可能对你上面说的没有用,呵呵)
架构之路 2005-11-24
  • 打赏
  • 举报
回复
口都说干了
在SELECT * 的前提下如何提高速度啊?,我必须这样查询是程序所决定的


我想过分页,由于没有唯一字段,很难办到~~!》?如何办,教教我
love16 2005-11-24
  • 打赏
  • 举报
回复
能不能分批呢?比如说top 10000先弄出来,再top 后面的10000
不知道楼主行不行?
wangdehao 2005-11-24
  • 打赏
  • 举报
回复
在这么多字段的情况下,最好每次只取出你需要的字段就可以了,索引的添加是由你的查询条件决定的,适当的索引会明显提高查询速度
架构之路 2005-11-24
  • 打赏
  • 举报
回复
必须要SELECT * FROM TABLE WHERE。。 的,因为是做数据导出的动作。
我只是想知道,在这种情况下有什么好的优化方法吗?

我的机器是P4 1.4,256MB,性能是不是差了点?影响速度了
Baby_Happy 2005-11-24
  • 打赏
  • 举报
回复
不要用SELECT *

用到那些栏位就SELECT 哪些栏位

本人一点拙见

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧