分页查询哦
查询的条件是 TP.DATE = '2016-09-20'. AND TG.GYS = 'G306'
这三个表的关联是
TP.DDID = TD.ID
TD.GYS = TG.GYS
TP.GYS = TG.GYS
我现在用的是not in 效率太低,花了28秒查询出来。555555555555555555555555
求大侠们帮写一个语句。 本人实在是不懂数据库,千万别说太高深的,听不懂。我呢只是完成这个任务,不走数据库路线,所以也不想学太深的东西
6 个解决方案
#1
你要得到大神们来帮助,你总的把你自己的代码贴出来呀 。这样才好帮助你。
#2
尝试在表的条件列建上索引,注:没索引的表
比如:
not in 改为not exists写法
比如:
CREATE INDEX IX_TP_1 ON TP(DATE,DDID,TP);
CREATE INDEX IX_TD_1 ON TD(ID,GYS);
CREATE INDEX IX_TG_1 ON TG(GYS);
not in 改为not exists写法
#3
#4
DECLARE @page INT =@PageIndex --当前页
DECLARE @pagingSize INT =@PageSize --一页显示的条数
SELECT * FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY TP.DATE DESC)RN
,TP.NUM
,TP.UNIT
,TP.NAME
,TG.U
,TD.C
FROM TP --主表
LEFT JOIN TG ON TP.GYS = TG.GYS
LEFT JOIN TD ON TP.DDID = TD.ID
WHERE TP.DATE = '2016-09-20'. AND TP.GYS = 'G306') t
WHERE rn BETWEEN (@page-1)*@pagingSize+1 AND @page*@pagingSize
不知道写的对不对
DECLARE @pagingSize INT =@PageSize --一页显示的条数
SELECT * FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY TP.DATE DESC)RN
,TP.NUM
,TP.UNIT
,TP.NAME
,TG.U
,TD.C
FROM TP --主表
LEFT JOIN TG ON TP.GYS = TG.GYS
LEFT JOIN TD ON TP.DDID = TD.ID
WHERE TP.DATE = '2016-09-20'. AND TP.GYS = 'G306') t
WHERE rn BETWEEN (@page-1)*@pagingSize+1 AND @page*@pagingSize
不知道写的对不对
#5
要看你有没有命中索引。
#6
楼主结贴率有点低啊
#1
你要得到大神们来帮助,你总的把你自己的代码贴出来呀 。这样才好帮助你。
#2
尝试在表的条件列建上索引,注:没索引的表
比如:
not in 改为not exists写法
比如:
CREATE INDEX IX_TP_1 ON TP(DATE,DDID,TP);
CREATE INDEX IX_TD_1 ON TD(ID,GYS);
CREATE INDEX IX_TG_1 ON TG(GYS);
not in 改为not exists写法
#3
#4
DECLARE @page INT =@PageIndex --当前页
DECLARE @pagingSize INT =@PageSize --一页显示的条数
SELECT * FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY TP.DATE DESC)RN
,TP.NUM
,TP.UNIT
,TP.NAME
,TG.U
,TD.C
FROM TP --主表
LEFT JOIN TG ON TP.GYS = TG.GYS
LEFT JOIN TD ON TP.DDID = TD.ID
WHERE TP.DATE = '2016-09-20'. AND TP.GYS = 'G306') t
WHERE rn BETWEEN (@page-1)*@pagingSize+1 AND @page*@pagingSize
不知道写的对不对
DECLARE @pagingSize INT =@PageSize --一页显示的条数
SELECT * FROM
(SELECT
ROW_NUMBER() OVER (ORDER BY TP.DATE DESC)RN
,TP.NUM
,TP.UNIT
,TP.NAME
,TG.U
,TD.C
FROM TP --主表
LEFT JOIN TG ON TP.GYS = TG.GYS
LEFT JOIN TD ON TP.DDID = TD.ID
WHERE TP.DATE = '2016-09-20'. AND TP.GYS = 'G306') t
WHERE rn BETWEEN (@page-1)*@pagingSize+1 AND @page*@pagingSize
不知道写的对不对
#5
要看你有没有命中索引。
#6
楼主结贴率有点低啊