小编Chi*_*ron的帖子

不同的vs组,哪个更好

对于最简单的情况,我们都提到:

select id from mytbl 
group by id
Run Code Online (Sandbox Code Playgroud)

select distinct id from mytbl
Run Code Online (Sandbox Code Playgroud)

正如我们所知,它们会生成相同的查询计划,这些计划在某些项目中反复提及,例如哪个更好:Distinct或Group By

然而,在蜂巢中,前者只有一个减少任务,而后者有许多.

通过实验,我发现GROUP BY 比DISTINCT快10倍.

它们是不同的.

所以我学到的是:

无论如何,GROUP-BY并不比DISTINCT差,有时它更好.

我想知道:

1.如果这个结论是真的.

2.如果为真,我会将DISTINCT视为一种方便的逻辑方法,但为什么DISTINCT不采用GROUP-BY更好的实现?

3.如果不对,我会非常渴望知道它在大数据情况下的体面使用.

非常感谢你!!:)

sql hadoop hive distinct

19
推荐指数
1
解决办法
1万
查看次数

INT 指令的具体行为是什么?

例如x86指令:push可以精确地描述为:

\n\n
push:\nsub esp, data_size\nmov [esp], data\n
Run Code Online (Sandbox Code Playgroud)\n\n

并且call可以描述为:

\n\n
call:\npush (eip+2)\njmp addr\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过了解这些,我们将完全清楚这些指令如何影响堆栈、寄存器和标志,我认为这是至关重要的。

\n\n

然而,在阅读《Intel\xc2\xae 64 和 IA-32 架构软件开发人员\xe2\x80\x99s 手册》之后。和“i386程序员手册”我没有找到有关INT指令的确切行为的信息。

\n\n

现在,我想在 INT 调用后修改堆栈,使我的程序返回到另一个地方。

\n\n

那么,INT被调用之后到底做了什么呢?

\n\n

(由程序员或硬件。我听说他们的行为不同)

\n\n

提前致谢!!

\n\n
\n

附:

\n\n

据我所知,INT 按某种顺序推送 eip、4 个通用寄存器、eflags 和一些奇怪的东西。

\n\n

我观察到当我调用它时它在堆栈上消耗了 6 个字节,

\n\n

当硬件触发时,它消耗18个字节。(如时钟)

\n\n

补充:我的代码

\n\n
    \n
  1. 将 ivt 0x1ch(系统定时器 Tick) 挂钩到我的函数 [foo]

  2. \n
  3. 科学技术

  4. \n
  5. 跳$

  6. \n
  7. foo: 打印\'A\'

  8. \n
\n\n

jmp $我在进入之前检查堆栈foo

\n …

x86 assembly operating-system interrupt

0
推荐指数
1
解决办法
1594
查看次数

标签 统计

assembly ×1

distinct ×1

hadoop ×1

hive ×1

interrupt ×1

operating-system ×1

sql ×1

x86 ×1