删了两索引,ParentID,UserID建联合主键.这样应该一1S以内就可查出.另外:1KW的表,定时做索引维护是必须的.

解决方案 »

  1.   

    这是我产生的 50 万条记录,我在 bName 和 bAdrress 上建立的索引,查询某条记录:
    select * from bigTable
    where bNumber=26152 --bName='塻峚垃廑' and bAdrress='姎乪匽悥倱噓侕愎代嬂'时间花费 0 秒,你可以试试:CREATE TABLE bigTable(
    bID int identity(1,1) primary key,
    bName varchar(10),
    bAdrress varchar(20),
    bText varchar(100),
    bNumber int,
    bSum datetime
    )
    GO--select NCHAR(19968)
    --select NCHAR(40869)select * from bigTabledeclare @random_number int,@seed int, @i int, @j int
    declare @random_Name varchar(10),@random_Adrress varchar(20),@random_Text varchar(100)
    set @i = 0
    set @seed=5
    WHILE (@i < 500000)
    BEGIN
    select @random_Name='',@random_Adrress='', @random_Text=''
    --首先产生长度为4个汉字的 bName
    WHILE (@j < 4)
    begin
    select @random_number=5 * power(10,3) * rand() + 2 * power(10,4)
    select @random_Name=@random_Name+NCHAR(cast(@random_number as int))
    set @j =@j+1
    end
    --产生长度为20个汉字的 bName
    set @j=0
    WHILE (@j < 20)
    begin
    select @random_number=5 * power(10,3) * rand() + 2 * power(10,4)
    select @random_Adrress=@random_Adrress+NCHAR(cast(@random_number as int))
    set @j =@j+1
    end
    set @j=0
    --产生长度为50个汉字的 bName
    WHILE (@j < 99)
    begin
    select @random_number=5 * power(10,3) * rand() + 2 * power(10,4) 
    select @random_Text=@random_Text+NCHAR(cast(@random_number as int))
    set @j =@j+1
    end
    set @j=0
    --产生10000到99999的整数个汉字的 bName
    SET @random_number=(power(10,@seed)-1-power(10,@seed-1))*rand()+power(10,@seed-1) INSERT INTO bigTable VALUES(@random_Name,@random_Adrress,@random_Text,@random_number,getdate())
    SET @i = @i + 1
    END
      

  2.   

    由于这个数据库是USA与中国做了同步,我不知道如果我重新建索引会不会影响同步,但上面的内容是千真万确的,所以我说MS变态,如果是人为想的话,应该是先查一个,再查下一个,但执行计划显示两个索引同时查,合并花了98%的时间,真离普