SQL执行的条件是一样的,但是查询列多了几个,为什么效率比较低?

发布于 科技 2024-02-25
26个回答
  1. 匿名用户2024-01-25

    这种情况确实发生过,我也有过这样的经验,这种情况发生在预言机数据库中,查询涉及到一个表中的大量数据,假设是表,开头没有带出A的字段,所以查询速度还可以; 后来,查询从表A中调来了一个字段,执行了很长一段时间都没有结果。 从执行计划中可以看出,查询的执行计划在添加字段前后都发生了变化,当没有带 a 的字段时,表 A 有按索引查询,而在有表的字段之后,表 A 不按索引查询,而是扫描表,这当然非常耗时!

    经过反复试验,我不得不更改查询,将从表 A 获取的字段放入子查询中,以避免速度变慢。

    在这种情况下,我们一般需要更改查询语句,或者添加索引来使查询成为索引,这样就不会效率低下。

  2. 匿名用户2024-01-24

    效率是和索引相关的,比如下面,从表中选择a、b,表格建立a和b的索引,所以语句的数据非常快,比如把语句改成从表中选择a、b、c,那么操作的效率就会降低,如果你经常用这些列来查询, 您可以建立相应的索引。

  3. 匿名用户2024-01-23

    按照查询原理,表A是表B中的几个字段,表B的效果应该差一点,但实际效果差不多,1W的数据量不大。 速度很快。 什么数据库,去执行它,看看时间。

  4. 匿名用户2024-01-22

    数据量太小,建议使用百万级数据片进行对比测试。

  5. 匿名用户2024-01-21

    查询的效率不仅与数据有关。

  6. 匿名用户2024-01-20

    您可以使用 group by 语句或 distinct 语句在 SQL 查询中显示具有相同内容的两条记录。

    例如,测试表包含以下数据:

    分组依据:

    select id,name from test group by id,name;

    查询结果:distinct 方法:

    select distinct id,name from test;

    查询结果:

  7. 匿名用户2024-01-19

    select * from sy where (swrq is null)

    and fnbm in(select fnbm from sy a where not exists(select 1 from sy b where <

    这里的 id 是一个自动增长的主键,最大的 id,子项越小。 你没有在条件中给出它,但我认为应该有一个类似的领域。

  8. 匿名用户2024-01-18

    按内容的字段排序,使用按字段名称分组,就可以了。

  9. 匿名用户2024-01-17

    首先,需要满足两个条件,即 a=b 和 c=d;

    其次,需要合并重复数据,即按 A 分组;

    最后,仅显示 2 条记录,即前 2 条;

    整个 SQL 就是这样:

    select top 2 * from table where a=b and c=d group by a;

    以上是字段 a 中存在重复项的情况,如果多个字段中存在重复项,则:

    select top 2 * from table where a=b and c=d group by a,b,c;

  10. 匿名用户2024-01-16

    sqlserver 写入。

    select ,from

    选择“表名”。 *,row number() over (按子字符串(qb,1,8)分区,name order by xh desc) rn from tablename) t

    where rn<=2

    在 oracle 中,substring(qb,1,8) 改为 substr(qb,1,8),其他数据库分别表示。

  11. 匿名用户2024-01-15

    它只能通过使用游标来完成,不能用简单的 SQL 语句实现。

  12. 匿名用户2024-01-14

    这样一来,有连接的字段只需要数据类型兼容就可以了,可以连接,但结果可能是荒谬的或者是空集的,大多数情况下连接字段是主码和外码,但是用于比较的等值和不等值串联就没有这个习惯了。

  13. 匿名用户2024-01-13

    也没有大的要求。 只要对应表之间的关系确实存在。 例如,如果 student 表中有 student id,而 teacher 表中有 stu id 字段,但它们是相关的,则 student id = stu id 就足够了。

  14. 匿名用户2024-01-12

    不需要字段名一模一样,只要字段类型兼容,关键是连接是否有意义。

  15. 匿名用户2024-01-11

    老师和同学之间有对应关系,找到这个对应关系,然后用它"="号码可以连接;

  16. 匿名用户2024-01-10

    通常,多表联接查询只有在链接时才会执行,否则就没有意义了。

  17. 匿名用户2024-01-09

    可以做笛卡尔积。

    但这没有多大意义。

    通常,在连接两个表之前必须有关联才能进行检查。

  18. 匿名用户2024-01-08

    从查询字段如“%g%”和查询字段与“%gz%”无关的表中选择 *

    此查询仅包含 g,而不包含 gz。

    select * from table where query field like '%gz%' 此查询同时包含 gz 和 g。 仅当查询包含 gz 时,它才必须包含 g。 所以它同时包含 gz 和 g。

  19. 匿名用户2024-01-07

    前后无所谓,但凡是后面跟着多个条件,在使用和加入的时候,这有一定的关系,一般原则是把表间链接的条件放在前面,后面是简单的条件,子链接的条件尽量放回去。

  20. 匿名用户2024-01-06

    例如,3*4 和 4*3,效率是一样的。

  21. 匿名用户2024-01-05

    在字段上使用函数可能会影响性能:

    这是基于以下前提:

    1.数据量巨大。

    2.此字段上有一个索引。

    例如,有一个 abc 表 (id int, mykeyword varchar2(20) 和许多其他字段。

    记录了 100 万行。

    其中 id 是主键,myKeyword 具有唯一的索引。

    当你表演时。 select * from abc where mykeyword = 'oracle';

    此查询将基于索引,该索引是快速已知的'oracle'当前表中是否有任何数据?

    如果是这样,在什么位置。

    然后根据位置读取文件(如果已经在缓存中,则不会读取磁盘),然后返回。

    但是,当您向字段添加函数时,情况就会发生变化。

    因为索引可能变得不可用。

    例如,select * from abc where translate( mykeyword,'123', '一二三') = '甲骨文一二三';

    在这种情况下,数据库必须提取 100 行数据中每行的 mykeyword 来执行翻译(mykeyword、'123', '一二三') 函数。

    然后拿着执行后的结果,去和'甲骨文一二三'比较。

  22. 匿名用户2024-01-04

    这是因为您是在列上构建一个简单的索引,而不是函数索引,因此当您使用函数时,它不会遵循您创建的索引,从而导致 SQL 性能下降。

  23. 匿名用户2024-01-03

    这个问题比较容易解释,比如说,如果你在一个字符的原始字段上创建了一个索引,当你使用它的时候,你给这个字段加了一个to号,那么就会发生类型转换,Oracle一般不会选择原来的索引,即使你选择,也不会有很好的效果。 解决方法是为要使用转换函数的列创建“函数索引”,并打开查询重写!

  24. 匿名用户2024-01-02

    orale 中的函数需要解析。 你可以看看 oracle 的执行计划,例如,在 oracle 中没有现有的那么快。 如果你使用喜欢,它会很慢。

  25. 匿名用户2024-01-01

    您应该参考函数的条件使用,如果不是复制计算,则可以在字段上使用函数。

    我正在使用 sqlserver,但它应该与使用函数的条件大致相同,即使条件有索引,也不会使用它,因为您必须通过函数计算获得一个值。

    所以一开始优化器根本用不上索引,直接定位了索引页书。 甲骨文尚不清楚。

    此类问题就是性能调优。 有很多预言机书籍应该很容易找到。

  26. 匿名用户2023-12-31

    select case rk when 1 then name else '' end,kecheng,chengji

    from (select name, kecheng, chengji,row_number() over (partition by name order by kecheng) rk

    from tab) t

    你问号白

    根据图书馆的问题,最好说明你是什么数据库。 如果需要 SQL Server 2000,可以尝试 DAO

    面对这个,我会回答。

    我不知道它是否适用于中文答案 max,select case when then name else null end,from tab t1,select name, max(kecheng) maxkecheng from tab) t2

    where =

相关回答
31个回答2024-02-25

石胜杰的相声层次在这个行业里处于中上层,毕竟石胜杰虽然很强势,很受人尊敬,但在观众中的知名度并不高。

14个回答2024-02-25

酶不含脂肪,还可以消化代谢脂肪,这与酸奶不同,多吃多吃只要有益就吃久久,瘦人经常用,甚至效果最好。 >>>More

7个回答2024-02-25

像黄瓜一样,它是什么?

19个回答2024-02-25

电视剧《异形少女》主题曲:我不想说。

演唱者:杨玉英。 >>>More

16个回答2024-02-25

1.银行的利率由国家设定,是统一利率。

2.在目前的形式下,三年期存款不是很合适。 毕竟过去一年左右的利率已经很多了,随时都有可能加息。 >>>More