数据库教程:对oracle sql的一些总结

在实现一个问题的时候,同样的结果我写了两个sql。 sql1 sql2 在效率问题上询问了前辈,得到的建议是使用第二个,因为分组跟子查询都会影响效率,相比之下分组好一点。 另外产生的一个问题是,如果使用.net并使用c#语言实现sql的话,第一个sql是无法(在我的能力范围内)使用拉姆达查询对象的, …

在实现一个问题的时候,同样的结果我写了两个sql。

sql1

 1 SELECT C1.*, C2.CF_NAMES  2   FROM FAMS_CLASSIFY C1  3   LEFT JOIN (SELECT A.CL_ID, LISTAGG(B.CF_NAME, ',') WITHIN GROUP(ORDER BY B.CF_NAME) AS CF_NAMES  4                FROM FAMS_CLASSIFY A  5                LEFT JOIN FAMS_CUSTOMFIELD B  6                  ON A.CL_ID = B.CL_ID  7               GROUP BY A.CL_ID) C2  8     ON C1.CL_ID = C2.CL_ID  9  WHERE C1.CL_TYPE = '2' 10    AND C1.CL_STATUS = '0' 11      AND 1=1 12  ORDER BY C1.CL_PID ASC, C1.CL_ID ASC

sql2

 1 SELECT A.CL_ID,  2        A.CL_NAME,  3        A.CL_PID,  4        A.CL_PNAME,  5        LISTAGG(B.CF_NAME, ',') WITHIN GROUP(ORDER BY B.CF_NAME) AS CF_NAMES  6   FROM FAMS_CLASSIFY A  7   LEFT JOIN FAMS_CUSTOMFIELD B  8     ON A.CL_ID = B.CL_ID  9  WHERE A.CL_TYPE = '2' 10    AND A.CL_STATUS = '0' 11    AND 1 = 1 12      GROUP BY A.CL_ID, A.CL_NAME, A.CL_PID, A.CL_PNAME 13  ORDER BY A.CL_PID ASC, A.CL_ID ASC  ;

在效率问题上询问了前辈,得到的建议是使用第二个,因为分组跟子查询都会影响效率,相比之下分组好一点。

 

另外产生的一个问题是,如果使用.net并使用c#语言实现sql的话,第一个sql是无法(在我的能力范围内)使用拉姆达查询对象的,但是又需要做结果分页。

以前用的是拉姆达查询对象的一个toPageList()方法,d进去发现里面的sql使用的是skip和take来分页,但是百度上都说oracle是使用rownum来分页的,没有其他分页方法。

最后询问知道skip和take是 Linq 的语法,转换成sql可能也是rownum。

需要了解更多数据库技术:对oracle sql的一些总结,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/801347.html

(0)
上一篇 2021年9月13日
下一篇 2021年9月13日

精彩推荐