小编rpf*_*pf3的帖子

全部删除/批量插入

首先让我说我在SQL Server 2005上运行,所以我没有访问权限MERGE.

我有一个约150k行的表,我每天从文本文件更新.当行从文本文件中删除时,我需要从数据库中删除它们,如果它们发生变化或者是新的,我需要相应地更新/插入.

经过一些测试后,我发现性能方面明智的是,执行完全删除然后从文本文件批量插入而不是通过执行更新/插入的行逐行读取是指数级更快.但是我最近遇到了一些讨论MERGE使用临时表和UPDATE语句输出来模仿SQL Server 2008功能的帖子.

我对此感兴趣,因为我正在调查当表没有行时如何消除删除/批量插入方法中的时间.我仍然认为这种方法将是最快的,所以我正在寻找解决空表问题的最佳方法.

谢谢

sql sql-server performance bulkinsert sql-server-2005

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

存储过程NULL参数

我有一个数据库表我试图用存储过程进行UPDATE/INSERT.让我们像这样定义表:

CREATE TABLE Foo
(
    Id           INT             IDENTITY(1, 1),
    Name         VARCHAR(256)    NOT NULL,
    ShortName    VARCHAR(32),
    Sort         INT
);
Run Code Online (Sandbox Code Playgroud)

我写了一个类似于以下的存储过程:

CREATE PROCEDURE Put_Foo
(
    @Id           INT             = NULL OUTPUT,
    @Name         VARCHAR(256),
    @ShortName    VARCHAR(32)     = NULL,
    @Sort         INT             = NULL
)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        @Id = F.Id
    FROM
        Foo AS F
    WHERE
        F.Name = @Name;

    IF (@Id IS NOT NULL)
    BEGIN
        UPDATE
            Foo
        SET
            ShortName    = @ShortName,
            Sort         = @Sort
        WHERE
            Id = @Id;
    END
    ELSE
    BEGIN
        INSERT
        INTO …
Run Code Online (Sandbox Code Playgroud)

sql null stored-procedures optional-parameters

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

Elasticsearch 动态字段映射和 JSON 点表示法

我正在尝试将日志从 Kubernetes 集群写入 Elasticsearch 索引。Fluent-bit 用于读取标准输出,并使用包括 Pod 标签在内的元数据来丰富日志。一个简化的日志对象示例是

{
  "log": "This is a log message.",
  "kubernetes": {
    "labels": {
      "app": "application-1"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是部署到集群的一些其他应用程序具有以下格式的标签:

{
  "log": "This is another log message.",
  "kubernetes": {
    "labels": {
      "app.kubernetes.io/name": "application-2"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这些应用程序是通过 Helm 图表安装的,较新的应用程序遵循此处列出的标签和选择器约定。标签和选择器的命名约定于 2018 年 12 月更新,请参见此处,但并非所有图表都已更新以反映这一点。

最终结果是,根据哪种类型的标签格式首先将其纳入弹性索引,尝试发送其他类型将引发映射异常。如果我创建一个新的空索引并首先发送命名空间标签,则尝试记录简单app标签将引发此异常:

object mapping for [kubernetes.labels.app] tried to parse field [kubernetes.labels.app] as object, but found a concrete value
Run Code Online (Sandbox Code Playgroud)

相反的情况,第二个发布命名空​​间标签,会导致此异常:

Could not dynamically add mapping for field [kubernetes.labels.app.kubernetes.io/name]. …
Run Code Online (Sandbox Code Playgroud)

elasticsearch logstash kubernetes kubernetes-helm fluent-bit

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

按顺序排序的SQL顺序

所以我有两个表,问题和答案,由多对多关系表,QuestionsAnswers加入.问题有一个排序列,允许我控制它们向用户显示的方式,而QuestionsAnswers也有一个排序列,允许我控制每个问题的答案顺序.我的问题是我正在尝试编写一个SQL查询,它将选择所有问题及其答案首先由Question.Sort然后由QuestionsAnswers.Sort排序.两个排序列都可以为空,这些列中的整数应优先于空值.

我可以通过Questions.Sort获得订单工作正常但是一旦我添加了第二个排序列,它就会出错.例如,如果一个问题的排序= 0意味着它应该是显示的第一个问题,但没有对其答案的任何偏好,它将在一个Questions.Sort = null和QuestionsAnswers.Sort = 0的QuestionsAnswers行下面排序. .

任何提示或想法,如果这是可行的将是伟大的.

编辑:

SELECT
    Q.Id AS QuestionId,
    Q.Name AS Question,
    A.Id AS AnswerId,
    A.Text AS Answer
FROM
    dbo.Questions AS Q
INNER JOIN
    dbo.QuestionsAnswers AS QA
        ON Q.Id = QA.QuestionId
INNER JOIN
    dbo.Answers AS A
        ON QA.AnswerId = A.Id
ORDER BY
    ISNUMERIC(Q.Sort) DESC,
    Q.Sort,
    Q.Id,
    A.Text;
Run Code Online (Sandbox Code Playgroud)

sql select sql-order-by

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