小编Iam*_*mIC的帖子

在索引列上使用ORDER BY

在SQL Server 2008中,假设我在Employees表上有一个索引(LastName,FirstName).索引在两列上按ASC排序.以下查询中的ORDER BY是否有任何意义?

SELECT   LastName, FirstName
FROM     Employees
ORDER BY LastName, FirstName
Run Code Online (Sandbox Code Playgroud)

查询分析器是否足够智能以省略ORDER BY,因为数据已按索引排序?或者总是指定所需的顺序更安全?

PS.我不是想进入"微观优化" - 只是更好地理解这种情况下发生的事情.

更多信息:

为了测试该理论,我随机添加了一些数据,创建了一个省略ORDER BY的查询,并对结果进行了排序.

sql sql-server sql-order-by

2
推荐指数
1
解决办法
284
查看次数

如何添加System.Array的.Net C#类扩展

我对类扩展非常熟悉,但并不期望以下行为.

我期望以下扩展System.Array,但它没有.相反,它扩展了System.Array的实例.为什么?

public static T[] Concatenate<T>(this Array value1, Array value2)
{
    int l1 = value1 == null ? 0 : value1.Length;
    int l2 = value2 == null ? 0 : value2.Length;

    T[] result = new T[l1 + l2];

    if (l1 > 0)
    {
        Array.Copy(value1, 0, result, 0, l1);
    }

    if (l2 > 0)
    {
        Array.Copy(value2, 0, result, l1, l2);
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

...

阵列.//没有连接

string[] s = new string[1];
s.Concatenate<string>... // appears here
Run Code Online (Sandbox Code Playgroud)

.net c# arrays extension-methods class

2
推荐指数
1
解决办法
845
查看次数

了解C#中的GCHandle.Alloc固定

我无意间发现了一些对我来说毫无意义的东西。我的问题在代码注释中和下面:

[SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]
[StructLayout(LayoutKind.Sequential, Size = 4096)]
public unsafe struct BufItems
{
    public fixed byte Buffer[4096];
}

public class Wrapper
{
    public BufItems Items;
    public int Id;
}

private unsafe void button10_Click(object sender, EventArgs e)
{
    Wrapper wrap = new Wrapper();
    wrap.Id = 123;

    fixed(BufItems* ptr = &wrap.Items)
    {
        ptr->Buffer[0] = 99;      // works fine
    }

    // fixed (Wrapper w = wrap)   { /* not possible */ };
    // fixed (Wrapper* w = &wrap) { /* not possible …
Run Code Online (Sandbox Code Playgroud)

.net c# prototyping pointers unsafe-pointers

2
推荐指数
1
解决办法
3479
查看次数

PostgreSQL可以使用HASH排除约束以获得唯一性吗?

由于哈希值比冗长的文本小,在我看来,为了确保列的唯一性,它们可能比b树更受欢迎。

仅出于确保唯一性的目的,是否有任何理由在PG 10中不符合以下条件?

CREATE TABLE test (
  path ltree,
  EXCLUDE USING HASH ((path::text) WITH =)
);
Run Code Online (Sandbox Code Playgroud)

我认为哈希冲突是在内部处理的。否则将毫无用处。

我将使用GiST索引来增强查询。

postgresql indexing unique-index ltree postgresql-10

2
推荐指数
1
解决办法
323
查看次数

Clang 14 和 15 显然优化了在 Clang 13、ICC、GCC、MSVC 下按预期编译的代码

我有以下示例代码:

inline float successor(float f, bool const check)
{
    const unsigned long int mask = 0x7f800000U;
    unsigned long int i = *(unsigned long int*)&f;

    if (check)
    {
        if ((i & mask) == mask)
            return f;
    }

    i++;

    return *(float*)&i;
}

float next1(float a)
{
    return successor(a, true);
}

float next2(float a)
{
    return successor(a, false);
}
Run Code Online (Sandbox Code Playgroud)

在 下x86-64 clang 13.0.1,代码按预期编译。

在 or 15下x86-64 clang 14.0.0,输出仅仅是andret的运算。next1(float)next2(float)

编译器选项:-march=x86-64-v3 -O3

代码和输出在这里:Godbolt

该 …

c++ clang strict-aliasing compiler-optimization type-punning

2
推荐指数
1
解决办法
887
查看次数

.Net相当于x86 ASM命令XADD

在.Net中是否有相当于XADD的命令?毕竟,这是锁定/检查关键部分锁定或确保多线程环境中准确增量的最有效方法.

我查看了IL操作码,但找不到相应的操作码.

.net multithreading synchronization cil

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

PostgreSQL 内部复合列基数

编辑

这不是关于空间的问题,而是关于索引的唯一性,它会影响查询计划。

就基数而言,哪个索引场景更高:

一种

Table:
(
  Col1 smallint,
  Col2 smallint
)
Run Code Online (Sandbox Code Playgroud)

在哪里

Range Col1 : 0 - 1000
Range Col2 : 0 - 1000
Run Code Online (Sandbox Code Playgroud)

和 上的复合索引(Col1, Col2),始终按顺序查询。

桌子:

(
  Col1_2 int
)
Run Code Online (Sandbox Code Playgroud)

在哪里

Range Col1_2 : 0 - 1000^2
Run Code Online (Sandbox Code Playgroud)

以及(Col1_2)结合 Col1 和 Col2 组件的存储和查询的单个索引。

我基本上要问的是,将多个小数字组合在一起(散列)更好(如在索引使用中),还是没有区别?

postgresql indexing database-design composite-key database-indexes

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

AVX/SSE 将浮点符号掩码转换为 __m128i

我使用以下内容来提取 的符号位__mm128

const int sign_mask = _mm_movemask_ps(a);
Run Code Online (Sandbox Code Playgroud)

我现在想使用以下内容来混合两个向量:

v_add = _mm_blendv_ps(a, v_add_neg, _mm_castsi128_ps(v_mask));
Run Code Online (Sandbox Code Playgroud)

v_mask需要来自sign_mask但我找不到执行此操作的内在函数。

a该代码的目的是根据另一个向量的相应元素中的符号来更改向量元素的符号。

c sse simd intrinsics avx

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