gpt4 book ai didi

sql-server - Sql Server 字符串实习

转载 作者:行者123 更新时间:2023-12-03 03:05:48 25 4
gpt4 key购买 nike

我们有一个表,用于存储所有异常(消息、stackTrace 等),该表变得越来越大,我们希望缩小它。

有大量重复的 StackTrace、消息等,但启用压缩会适度减小大小 (10%),而我认为如果 Sql Server 能够以某种方式实现的话,可能会带来更大的好处 intern the strings在一些每列哈希表中。

如果我规范化表并将 StackTrace 提取到另一个表,我可以获得一些好处,但异常消息、异常类型等也会重复。

有没有办法为 Sql Server 中的某些列启用字符串驻留?

最佳答案

没有内置方法可以执行此操作。您可以轻松地执行以下操作:

SELECT MessageID = IDENTITY(INT, 1, 1), Message 
INTO dbo.Messages
FROM dbo.HugeTable GROUP BY Message;

ALTER TABLE dbo.HugeTable ADD MessageID INT;

UPDATE h
SET h.MessageID = m.MessageID
FROM dbo.HugeTable AS h
INNER JOIN dbo.Messages AS m
ON h.Message = m.Message;

ALTER TABLE dbo.HugeTable DROP COLUMN Message;

现在您需要做一些事情:

  • 更改日志记录过程以对消息表执行更新插入
  • 向消息表添加适当的索引(不确定消息数据类型)和 PK
  • 将 FK 添加到 MessageID 列
  • 在 HugeTable 上重建索引以回收空间
  • 首先在测试环境中执行此操作!

关于sql-server - Sql Server 字符串实习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com