KDB/Q:什么是向量运算?

use*_*ght 0 kdb

我正在学习 KDB+ 和 Q 编程并阅读以下语句 - “select 对列列表执行向量操作”。这里的向量运算是什么意思?有人可以举例说明吗?另外,它比标准 SQL 更快吗?

Ale*_*sky 5

向量运算是一种采用一个或多个向量并产生另一个向量的运算。例如+q 是一个向量运算:

q)a:1 2 3
q)b:10 20 30
q)a + b
11 22 33
Run Code Online (Sandbox Code Playgroud)

如果ab是表中的列,则可以在select语句中对它们执行向量运算。继续前面的示例,让我们将ab向量作为列放入表中:

q)([]a;b)
a b
----
1 10
2 20
3 30
Run Code Online (Sandbox Code Playgroud)

现在,

q)select c:a + b from ([]a;b)
c
--
11
22
33
Run Code Online (Sandbox Code Playgroud)

select 语句执行相同的a+b向量加法,但接受输入并将输出作为表列返回。

它为何比标准 SQL 更快?

“标准”SQL 实现通常逐行存储数据。在具有许多列的表中,列的第一个元素及其第二个元素可以在内存中由其他列的数据分隔开。当数据连续存储时,现代计算机的运行效率最高。在 kdb+ 中,这是通过逐列存储表来实现的。