SQL order by ID desc/asc加一個排序的字段解決查詢慢問題
更新時間:2012年12月16日 17:29:43 作者:
解決方法就是在order by ID desc再加一個排序的字段,這樣子可能會把速度提高很多,需要朋友可以試一下
解決方法就是在order by ID desc再加一個排序的字段,這樣子可能會把速度提高很多。再加止排序的字段因查詢而異了
如表
CREATE TABLE [dbo].[CMPP_SendCentre] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[SendType] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[SendDate] [datetime] NOT NULL ,
[Port] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Service_ID] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FeeType] [varchar] (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FeeCode] [varchar] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Msg_Content] [varchar] (1024) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[SendCount] [int] NOT NULL ,
[SucceedCount] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CMPP_SendCentreMo] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[SendCentreID] [int] NOT NULL ,
[Mo] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Stat] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CMPP_SendCentreMo.SendCentreID 與CMPP_SendCentre.ID成外建關(guān)系
于是建了一個視圖
CREATE VIEW dbo.ViewCMPP_SendCentreMo
AS
SELECT
dbo.CMPP_SendCentreMo.id,
dbo.CMPP_SendCentreMo.SendCentreID,
dbo.CMPP_SendCentreMo.Mo,
dbo.CMPP_SendCentreMo.Stat,
dbo.CMPP_SendCentre.SendType,
dbo.CMPP_SendCentre.SendDate,
dbo.CMPP_SendCentre.Port,
dbo.CMPP_SendCentre.Service_ID,
case dbo.CMPP_SendCentre.FeeType when '01' then '免費' when '02' then '點播' else '包月' end as FeeType,
cast(dbo.CMPP_SendCentre.FeeCode as smallint) as FeeCode,
dbo.CMPP_SendCentre.Msg_Content
FROM dbo.CMPP_SendCentre INNER JOIN
dbo.CMPP_SendCentreMo ON
dbo.CMPP_SendCentre.id = dbo.CMPP_SendCentreMo.SendCentreID
一開始的查詢語句為
select top 6*from [ViewCMPP_SendCentreMo]
where SendType = '扣費'
order by id desc
發(fā)現(xiàn)非常的慢
經(jīng)過了解,原因是order by id desc/asc的查詢是一行一行的找數(shù)據(jù),所以非常的慢
于是改成了
select top 6*from [ViewCMPP_SendCentreMo]
where SendType = '扣費'
order by SendCentreID desc, id desc
查詢就非常的快了
如表
復(fù)制代碼 代碼如下:
CREATE TABLE [dbo].[CMPP_SendCentre] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[SendType] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[SendDate] [datetime] NOT NULL ,
[Port] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Service_ID] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FeeType] [varchar] (2) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FeeCode] [varchar] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Msg_Content] [varchar] (1024) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[SendCount] [int] NOT NULL ,
[SucceedCount] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CMPP_SendCentreMo] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[SendCentreID] [int] NOT NULL ,
[Mo] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Stat] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CMPP_SendCentreMo.SendCentreID 與CMPP_SendCentre.ID成外建關(guān)系
于是建了一個視圖
復(fù)制代碼 代碼如下:
CREATE VIEW dbo.ViewCMPP_SendCentreMo
AS
SELECT
dbo.CMPP_SendCentreMo.id,
dbo.CMPP_SendCentreMo.SendCentreID,
dbo.CMPP_SendCentreMo.Mo,
dbo.CMPP_SendCentreMo.Stat,
dbo.CMPP_SendCentre.SendType,
dbo.CMPP_SendCentre.SendDate,
dbo.CMPP_SendCentre.Port,
dbo.CMPP_SendCentre.Service_ID,
case dbo.CMPP_SendCentre.FeeType when '01' then '免費' when '02' then '點播' else '包月' end as FeeType,
cast(dbo.CMPP_SendCentre.FeeCode as smallint) as FeeCode,
dbo.CMPP_SendCentre.Msg_Content
FROM dbo.CMPP_SendCentre INNER JOIN
dbo.CMPP_SendCentreMo ON
dbo.CMPP_SendCentre.id = dbo.CMPP_SendCentreMo.SendCentreID
一開始的查詢語句為
復(fù)制代碼 代碼如下:
select top 6*from [ViewCMPP_SendCentreMo]
where SendType = '扣費'
order by id desc
發(fā)現(xiàn)非常的慢
經(jīng)過了解,原因是order by id desc/asc的查詢是一行一行的找數(shù)據(jù),所以非常的慢
于是改成了
復(fù)制代碼 代碼如下:
select top 6*from [ViewCMPP_SendCentreMo]
where SendType = '扣費'
order by SendCentreID desc, id desc
查詢就非常的快了
您可能感興趣的文章:
- SQL Server 排序函數(shù) ROW_NUMBER和RANK 用法總結(jié)
- 讓MySQL支持中文排序的實現(xiàn)方法
- sqlserver中將varchar類型轉(zhuǎn)換為int型再進行排序的方法
- sql多條件多字段排序(圖文教程)
- Mysql select in 按id排序?qū)崿F(xiàn)方法
- SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法
- MYSQL 關(guān)于兩個經(jīng)緯度之間的距離由近及遠排序
- Mysql中的排序規(guī)則utf8_unicode_ci、utf8_general_ci的區(qū)別總結(jié)
- SQL-ORDER BY 多字段排序(升序、降序)
- SQL語句實現(xiàn)表中字段的組合累加排序
相關(guān)文章
SqlServer參數(shù)化查詢之where in和like實現(xiàn)之xml和DataTable傳參介紹
在上一篇Sql Server參數(shù)化查詢之where in和like實現(xiàn)詳解中介紹了在Sql Server使用參數(shù)化查詢where in的幾種實現(xiàn)方案,遺漏了xml和表值參數(shù),這里做一個補充2012-05-05sqlserver 復(fù)制表 復(fù)制數(shù)據(jù)庫存儲過程的方法
復(fù)制整個SqlServer數(shù)據(jù)庫的問題的比較好的方法2008-02-02SQL Server把某個字段的數(shù)據(jù)用一條語句轉(zhuǎn)換成字符串
這篇文章主要介紹了SQL Server把某個字段的數(shù)據(jù)用一條語句轉(zhuǎn)換成字符串,本文講解使用一條語句把字段中的數(shù)據(jù)查詢出來并以指定分割符組成字符串,需要的朋友可以參考下2015-07-07SQL SERVER 2014 安裝圖解教程(含SQL SERVER 2014下載)
這篇文章主要介紹了SQL SERVER 2014 安裝圖解教程(含SQL SERVER 2014下載),需要的朋友可以參考下2015-10-10SQL Server中使用sp_password重置SA密碼實例
這篇文章主要介紹了SQL Server中使用sp_password重置SA密碼實例,一般在忘記SA密碼時的恢復(fù)手段,需要的朋友可以參考下2014-08-08SQL Server無日志恢復(fù)數(shù)據(jù)庫(2種方法)
SQL Server數(shù)據(jù)庫中的日志文件可能會由于一些突發(fā)事件或者失誤造成丟失的嚴重后果,大家都知道,SQL Server數(shù)據(jù)庫中日志文件是很重要的,所以要及時的將丟失的日志文件給找回來。下文就為大家介紹一種恢復(fù)數(shù)據(jù)庫日志文件的方法。2015-08-08將mater庫中的系統(tǒng)存儲過程批量生成*.sql文件 通用且非常實用
最近因為系統(tǒng)需要,需要將master庫的所有和業(yè)務(wù)相關(guān)的存儲過程批量生成 存儲過程名.sql 文件,默認是不可以導(dǎo)出的2012-05-05