zoukankan      html  css  js  c++  java
  • 大数据量的查询

    1.用临时表

    2.用存储过程

    3.建索引

    -- =============================================
    -- Author:        Ylem
    -- Create date: 2009-12-23
    -- Description:    得到导入简历列表
    -- =============================================
    alter PROCEDURE [dbo].[proc_GetImportResumeBaseByconditions2]
    (
        @ConditionSql  varchar(3000),
        @Size int,
        @index varchar(10),
        @count int output
    )
    AS    
    BEGIN
        --SET NOCOUNT ON;
        
        DECLARE @sql nvarchar(4000)
        
        CREATE TABLE #ResumeBase (
            ResumeID uniqueidentifier PRIMARY KEY
            ,JobSeekerID uniqueidentifier
            ,ResumeCode varchar(64)
            ,ResumeSourceSite varchar(20)
            ,ResumeSourceID varchar(64)
            ,UpdateDate datetime
            ,CreateDate datetime
            ,AuditStatue Smallint)
            
        CREATE TABLE #BuyResume(ResumeID uniqueidentifier PRIMARY KEY, Quantity int)
        INSERT INTO #BuyResume(ResumeID, Quantity)
        SELECT ResumeID, COUNT(*) Quantity
        FROM BuyNoContactResume
        GROUP BY ResumeID    
        
        INSERT INTO #ResumeBase
        EXEC (@ConditionSql)
        
        CREATE INDEX IX_ResumeBaseTemp_JobSeekerID ON #ResumeBase(JobSeekerID ASC);        
                    
        CREATE TABLE #TempRecord (IndexID int /*IDENTITY (1, 1) NOT NULL primary key*/,
            ResumeID uniqueidentifier
            ,ResumeCode varchar(64)
            ,ResumeSourceSite varchar(20)
            ,ResumeSourceID varchar(64)
            ,UpdateDate datetime
            ,CreateDate datetime
            ,CityID varchar(20)
            ,ContactState tinyint
            ,Sex bit
            ,Age int
            ,Degree int
            ,LastLoginDate datetime
            ,AuditStatue smallint)
        
            SET @sql = '
            SELECT IndexID = ROW_NUMBER() OVER(ORDER BY CreateDate), t.*
            FROM (
                    SELECT
                        rb.ResumeID
                        ,rb.ResumeCode
                        ,rb.ResumeSourceSite
                        ,rb.ResumeSourceID
                        ,rb.UpdateDate
                        ,rb.CreateDate
                        ,i.CityID
                        ,i.ContactState
                        ,i.Sex
                        ,datediff(yy,i.Birthday,getdate()) Age
                        ,i.Degree
                        ,u.LastLoginDate
                        ,rb.AuditStatue
                    FROM
                        #ResumeBase rb
                        JOIN JobSeekerInfo i ON i.JobSeekerID = rb.JobSeekerID
                        join jobseekeruser u on u.JobSeekerID = rb.JobSeekerID
                    WHERE i.ContactState =0
                ) t'

        
        INSERT INTO #TempRecord
        EXEC (@sql)
        --返回统计数
        SELECT @count = max(IndexID) from #TempRecord    

        --返回数据
        SELECT * FROM #TempRecord tmp
        WHERE IndexID > (@index*@Size) and IndexID<=((@index + 1) * @Size)
        DROP TABLE #TempRecord
    END 

  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/ylemzhang/p/1667767.html
Copyright © 2011-2022 走看看