久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何加速此 Row_Number 查詢?

How do I speed up this Row_Number query?(如何加速此 Row_Number 查詢?)
本文介紹了如何加速此 Row_Number 查詢?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

這是我的查詢:

SELECT * 
FROM 
    (SELECT 
        ROW_NUMBER() OVER (ORDER BY NAME asc) peta_rn, 
        peta_query.* 
     FROM 
         (SELECT 
              BOOK, PAGETRIMMED, NAME, TYPE, PDF 
         FROM 
              CCWiseDocumentNames2 cdn
         INNER JOIN 
              CCWiseInstr2 cwi ON cwi.ID = cdn.ID) as peta_query) peta_paged 
WHERE 
    peta_rn > 1331900 AND peta_rn <= 1331950

目前這個查詢需要大約 4 秒才能得到結(jié)果.有什么辦法可以讓它在 1 秒以內(nèi)?

Currently this query takes about 4 seconds to get the results. Is there any way to bring it under 1 second?

索引已經(jīng)在 cwi.IDcdn.ID 上創(chuàng)建.以下是來自 sql server 的實際執(zhí)行計劃:

Index is already created on cwi.ID and cdn.ID. Below is the actual execution plan from sql server:

任何幫助都會有用.

這是表結(jié)構(gòu):

    /****** Object:  Table [dbo].[CCWiseInstr2]    Script Date: 9/17/2013 3:54:27 AM ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    SET ANSI_PADDING ON
    GO

    CREATE TABLE [dbo].[CCWiseInstr2](
        [ID] [int] NULL,
        [BK_PG] [varchar](50) NULL,
        [DATE] [datetime] NULL,
        [ITYPE] [varchar](50) NULL,
        [BOOK] [int] NULL,
        [PAGE] [varchar](50) NULL,
        [NOBP] [varchar](50) NULL,
        [DESC] [varchar](240) NULL,
        [TIF] [varchar](50) NULL,
        [INDEXNAME] [varchar](50) NULL,
        [CONFIRM] [varchar](50) NULL,
        [PDF] [varchar](50) NULL,
        [PAGETRIMMED] [varchar](10) NULL
    ) ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF
    GO

    /****** Object:  Index [IX_CCWiseInstr2_ID]    Script Date: 9/17/2013 3:54:27 AM ******/
    CREATE NONCLUSTERED INDEX [IX_CCWiseInstr2_ID] ON [dbo].[CCWiseInstr2]
    (
        [ID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    GO



/****** Object:  Table [dbo].[CCWiseDocumentNames2]    Script Date: 9/17/2013 3:54:18 AM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[CCWiseDocumentNames2](
    [ID] [int] NULL,
    [BK_PG] [varchar](50) NULL,
    [NAME] [varchar](100) NULL,
    [OTHERNAM] [varchar](100) NULL,
    [TYPE] [varchar](50) NULL,
    [INDEXNAME] [varchar](50) NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

/****** Object:  Index [IX_CCWiseDocumentNames2_ID]    Script Date: 9/17/2013 3:54:18 AM ******/
CREATE NONCLUSTERED INDEX [IX_CCWiseDocumentNames2_ID] ON [dbo].[CCWiseDocumentNames2]
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

SET ANSI_PADDING ON

GO

/****** Object:  Index [IX_CCWiseDocumentNames2_NAME]    Script Date: 9/17/2013 3:54:18 AM ******/
CREATE NONCLUSTERED INDEX [IX_CCWiseDocumentNames2_NAME] ON [dbo].[CCWiseDocumentNames2]
(
    [NAME] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

推薦答案

你不需要有 PK 或 Identity,所以你仍然可以在 ID 列上創(chuàng)建聚集索引.它允許重復(fù)值,如果您沒有附加 ID,而是在中間添加 ID,那么您唯一應(yīng)該擔(dān)心的是 INSERT 性能.

You don't need to have PK or Identity, so you still can create clustered index on ID column. It alows repeating values, and the only thing you should be worrying about is INSERT performance if you're the IDs are not appended, but added in the middle.

為什么在外部查詢中使用 row_number()?我認為可以在單選中實現(xiàn)相同的結(jié)果(也許您必須更改排名功能并使用分區(qū)).順便說一句,如果您的內(nèi)部查詢不返回唯一的 NAME 并且您使用 row_number 而不分區(qū),那么 peta_rn 可能會返回誤導(dǎo)性值(具有許多不同 peta_rn 的相同名稱).我只是猜測,因為我不知道你到底想達到什么目的.

Why are you using row_number() in outer query? I think the same result can be achieved in single select (maybe you'll have to change the ranking function and use partitioning). Btw if your inner query does not return unique NAME and you're using row_number without partitioning, then peta_rn may return misleading values (same name with many different peta_rn). I'm just guessing because I don't know what exactly are you trying to achieve.

使用聚集索引,您將在 1 秒內(nèi)完成它,沒問題.

Go with the clustered index and you'll bring it under 1s no problem.

這篇關(guān)于如何加速此 Row_Number 查詢?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉(zhuǎn)換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創(chuàng)建視圖?)
Create calculated value based on calculated value inside previous row(根據(jù)前一行內(nèi)的計算值創(chuàng)建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發(fā)技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉(zhuǎn)換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 97人人超碰 | www.成人久久 | 天天综合网永久 | 农村真人裸体丰满少妇毛片 | 亚洲视频一区在线播放 | 精品久久久久国产免费第一页 | 久热久热 | 91精品入口蜜桃 | 成人影院在线 | 日韩在线综合 | 久久国产亚洲 | 国产精品欧美日韩 | 精品国产乱码久久久久久丨区2区 | 国产 日韩 欧美 中文 在线播放 | 久久精品亚洲国产 | 日本一级淫片免费啪啪3 | 精品久 | 九九热精品在线 | 高清一区二区视频 | 色综合一区二区 | 欧美黄色网络 | 欧美色欧美亚洲另类七区 | 中文字幕一区二区三区乱码图片 | 久久久天堂 | 亚洲日韩中文字幕 | 黑人精品欧美一区二区蜜桃 | 成人精品网 | 国产精品99久久久久久动医院 | 一区二区在线不卡 | 中文字幕国产 | 日本一区二区电影 | 国产成人精品一区二区 | 一区二区精品视频 | 嫩草一区二区三区 | 亚洲一区视频在线 | 成人无遮挡毛片免费看 | 视频一区二区在线观看 | 国产一区二区三区色淫影院 | 99久视频 | 免费在线成人网 | 成人黄色av网站 |