现在遇到三个难题鸟。。 第一个问题是:一个是在一张表内,有57个字段。是不是有些太多了,会不会有什么太大的影响,需要怎么调整么 第二个问题是:上面这张表会被一些人在GridView中看到,并且做编辑,编辑的时候是在另外的一个页面,怕是会造成两个人改同一条记录,本来想在进入这个页面的时候更改数据库里面的信息做一个标记,但是怕页面被其他方式关闭或离开,没有把这个标记改掉,这样这条数据就会丢失了吧。。有什么有什么办法解决这个问题呀。 第三个问题是:前一段时间勉强做了一个先用着,大概有个1000条数据,但是在GridView的一个页面非常的卡,网速慢的时候可能进不去的样子,查询语句用到了函数和inner join 等都是关联到别的表的数据,这样关联的字段大概貌似有8、9个的样子吧,有没有办法能够查询的快一些呢。现在那个页面都没法用了。

推荐图书

  • C#与.NET 4高级程序设计(第5版)


1个回答

1、57个字段并不算多,真的有需要这样做也无可厚非,不过,还是检查看,是否在定义上有冗余,此外,如果你害怕多了,就用两个表做一对一的关联吧,把不常用的字段弄出去。

2、没有什么更好的办法,一般都是通过时间戳的形式来保证数据更新的时候不去更新上次读取以来被别人更新过的数据。解决这个问题的最好办法就是使用特权。

3、 GridView分页默认是吧所有的数据都一次性的读出来。你可以用sql语句每次制度出当前页显示的数据。 还是别用gridview了,listview分页很不错的 ,如果是vs2005 可以用apsnetpage 或者手写 。混点分啊嘎嘎。。不然没法问了。

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONGO-- =============================================-- Author:        <Author,,Name>-- Create date: <Create Date,,>-- Description:    <Description,,>-- =============================================CREATE PROCEDURE [dbo].[MemoPage]    -- Add the parameters for the stored procedure here    @pizindex int,    @agesize  intASBEGIN    -- SET NOCOUNT ON added to prevent extra result sets from    -- interfering with SELECT statements.    DECLARE @sql nvarchar(1000)    set @sql= 'SELECT TOP '+ cast( @pizindex as nvarchar(10))+ ' * FROM memo WHERE MemoId NOT IN ( SELECT TOP '+ cast(@pizindex*(@agesize-1) as nvarchar(10)) + ' MemoId FROM memo)'    EXEC(@sql)END

简单的分页存储过程