SQL order by ID desc/asc加一個排序的字段處理查詢慢成績。本站提示廣大學習愛好者:(SQL order by ID desc/asc加一個排序的字段處理查詢慢成績)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL order by ID desc/asc加一個排序的字段處理查詢慢成績正文
處理辦法就是在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成外建關系
因而建了一個視圖
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
發明異常的慢
經由懂得,緣由是order by id desc/asc的查詢是一行一行的找數據,所以異常的慢
因而改成了
select top 6*from [ViewCMPP_SendCentreMo]
where SendType = '扣費'
order by SendCentreID desc, id desc
查詢就異常的快了
/>
def compList(list1,list2):
return list(set(list1)-set(list2))
'''
復制List中文件到指定地位
'''
def copyFiles(fileList,targetDir):
for file in fileList:
targetPath=os.path.join(targetDir,os.path.dirname(file))
targetFile=os.path.join(targetDir,file)
if not os.path.exists(targetPath):
os.makedirs(targetPath)
if not os.path.exists(targetFile) or (os.path.exists(targetFile) and os.path.getsize(targetFile)!=os.path.getsize(file)):
print "正在復制文件:"+file
open(targetFile,'wb').write(open(file,'rb').read())
else:
print "文件已存在,不復制!"
if __name__ == '__main__':
path=".svn"
#獲得源目次
txtFile="1.txt"
#目次構造輸入的目標文件
tdir="cpfile"
#復制到的目的目次
cfFile="config.ini";
#設置裝備擺設文件文件名
fileList=[]
#讀取設置裝備擺設文件
if(os.path.exists(cfFile)):
cf=ConfigParser.ConfigParser()
cf.read(cfFile)
path=cf.get("main", "sourceDir")
txtFile=cf.get("main","txtFile")
tdir=cf.get("main","targetDir")
else:
print "設置裝備擺設文件不存在!"
raw_input("\n按 回車鍵 加入\n")
exit()
if(os.path.exists(txtFile)):
#假如導出的文件存在,就讀取後比擬
list1=readFileToList(txtFile)
print "正在讀取文件列表……"
fileList=listDir (fileList,path)
print "正在比擬文件……"
list_res=compList(fileList,list1)
if len(list_res)>0:
print "以下是原目次中不存在的文件:\n"
print "\n".join(list_res)
print "\n合計文件數:"+str(len(list_res))+"\n"
if raw_input("\n能否復制文件?(y/n)")!='n':
copyFiles(list_res,tdir)
else:
print "沒有不雷同的文件!"
else:
#假如導出的文件不存在,則導出文件
print "正在讀取文件列表……"
fileList=listDir (fileList,path)
writeListToFile(fileList,txtFile)
print "已保留到文件:"+txtFile
raw_input("\n按 回車鍵 加入\n")
3. 設置裝備擺設文件名:config.ini以下:
#設置裝備擺設文件名:config.ini
[main]
sourceDir=wwwroot
txtFile=1.txt
targetDir=cp
願望本文所述對年夜家的Python法式設計有所贊助。