跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 求教一下,这种格式的 SQL 该怎么优化
未分類
13 4 月 2021

求教一下,这种格式的 SQL 该怎么优化

求教一下,这种格式的 SQL 该怎么优化

資深大佬 : hiahiahiahia 0

SELECT(     SELECT 根据表 A 或者表 B 进行函数计算      FROM 表 A JOIN 表 B    ON 表 A.id = 表 B.id      WHERE       表 C.id = 表 A.C_ID         ) AS 字段名  FROM 表 C WHERE ***** 

试过把表 C 放在里面 join,或者把子查询里面的函数取出来,全部放最外面 where;
但是数据都不对,有没有老哥知道怎么优化

大佬有話說 (16)

  • 主 資深大佬 : hiahiahiahia

    原始 SQL 大概有八九个这样查询的字段,崩溃了

  • 主 資深大佬 : hiahiahiahia

    目前查询大概一分钟左右

  • 資深大佬 : fiypig

    explain 先看下效果, 我看索引那些都有了把

  • 主 資深大佬 : hiahiahiahia

    @fiypig 索引都有,执行计划里大部分都是 all

  • 資深大佬 : akira

    数据不对那就是 sql 都没有写对了啊。join 这个东西 确实容易写错的

  • 資深大佬 : lyqqqq

    SELECT(根据表 A 或者表 B 进行函数计算) AS 字段名
    FROM 表 C
    JOIN 表 A ON 表 C.id = 表 A.C_ID
    JOIN 表 B ON 表 A.id = 表 B.id
    WHERE *****

    有时候是 函数计算 的锅

  • 資深大佬 : stevenbipt

    看看内部 select 自查询的时候有没有命中索引

  • 資深大佬 : wengyanbin

    SELECT 根据表 A 或者表 B 进行函数计算
    FROM 表 A JOIN 表 B
    ON 表 A.id = 表 B.id
    WHERE A.C_ID IN(SELECT ID FROM 表 C WHERE 条件)
    或者把 in 语句换成 exists 语句试下

  • 主 資深大佬 : hiahiahiahia

    @lyqqqq 试过这种,查出来的数据是错的

  • 主 資深大佬 : hiahiahiahia

    @wengyanbin 没有 in 语句

  • 資深大佬 : wengyanbin

    @hiahiahiahia 我的意思是让你将原语句改写成 in 语句或者 exists 语句的格式,看下执行效率跟结果

  • 資深大佬 : shoushi

    函数计算 索引不是会失效么

  • 資深大佬 : x2009again

    把 where 的条件也放入 join 的 on 上去试试

  • 資深大佬 : CodeUtils

    表的数据量大小关系是怎么样的?

  • 資深大佬 : jhdxr

    这帖子问的是查询结果是错的怎么办。。。
    超过一半回复都在评论查询效率 _(:з」∠)_

  • 資深大佬 : c6h6benzene

    可能我技术不够,但子查询里面没有表 C,where 里面却有表 C 的字段,这真的不会报错吗…?

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具