AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-8771

AmmarR's questions

Martin Hope
AmmarR
Asked: 2012-08-28 23:07:57 +0800 CST

提高事实表的性能

  • 2

我有一个事实表 CardTransactionFact

表结构

TABLE [dbo].[CardTransactionFact]
    [CardTransactionID] [int] IDENTITY(1,1) NOT NULL,
    [TransactionTerminalID] [int] NOT NULL,
    [SourceAccountTypeID] [int] NULL,
    [DestinationAccountTypeID] [int] NULL,
    [RimNo] [varchar](15) NULL,
    [CaptureCodeID] [int] NOT NULL,
    [RoutingCodeID] [int] NOT NULL,
    [ProcessingCodeID] [int] NOT NULL,
    [ActionCodeID] [int] NOT NULL,
    [NetworkCodeID] [int] NOT NULL,
    [ProductCodeID] [int] NOT NULL,
    [AcquiringCountryCodeID] [int] NOT NULL,
    [IssuingCountryCodeID] [int] NOT NULL,
    [TransactionCurrencyCodeID] [int] NOT NULL,
    [AmountBD] [decimal](18, 3) NOT NULL,
    [LocalCurrencyCodeID] [int] NOT NULL,
    [CardIssuerBank] [int] NOT NULL,
    [CardTypeID] [int] NOT NULL,
    [SuspectTransactionFlag] [char](1) NOT NULL,
    [ReversalTransactionFlag] [char](1) NOT NULL,
    [LocalTransactionDateKey] [int] NOT NULL,
    [LocalTransactionHourKey] [int] NOT NULL,
    [BBKRole] [char](1) NOT NULL,
    [AmountRangeKey] [int] NULL,
    [CustomerKey] [int] NULL

大小:11GB 行数:56,959,828


现在访问这个表变得非常困难,一个简单Select count(*) from CardTransactionFact的需要几个小时才能执行。

表中的大多数列只是整数,这就是我没有做任何索引的原因。

你认为我应该做些什么来改进这个表,并提高查询这个表的速度

  1. 如果索引我应该索引哪些列以及为什么
  2. 对表进行分区是个好主意吗
  3. 任何其他建议
sql-server-2008 index
  • 3 个回答
  • 2506 Views
Martin Hope
AmmarR
Asked: 2012-06-29 04:09:29 +0800 CST

动态定义维度中的范围

  • 18

每次我决定构建一个立方体时,我都会遇到一个问题,但我还没有找到解决它的方法。

问题是如何允许用户自动定义一系列事物,而无需在维度中对其进行硬编码。我将在一个例子中解释我的问题。

我有一张名为Customers的表:

表结构

这是表中的数据:

数据表

我想以数据透视样式显示数据,并将Salary和Age分组在定义的范围内,如下所示:

具有定义范围的数据表

我编写了这个脚本并定义了范围:

SELECT [CustId]
      ,[CustName]
      ,[Age]
      ,[Salary]
      ,[SalaryRange] = case
        when cast(salary as float) <= 500 then
            '0 - 500'
        when cast(salary as float) between 501 and 1000 then
            '501 - 1000'
        when cast(salary as float) between 1001 and 2000 then
            '1001 - 2000'
        when cast(salary as float) > 2000 then
            '2001+'
        end,
        [AgeRange] = case
        when cast(age as float) < 15 then
            'below 15'
        when cast(age as float) between 15 and 19 then
            '15 - 19'
        when cast(age as float) between 20 and 29 then
            '20 - 29'               
        when cast(age as float) between 30 and 39 then
            '30 - 39'
        when cast(age as float) >= 40 then
            '40+'
        end
  FROM [Customers]
GO

我的范围是硬编码和定义的。当我将数据复制到 Excel 并在数据透视表中查看时,它如下所示:

数据透视表中的数据

我的问题是我想通过将Customers表转换为事实表并创建二维表SalaryDim和AgeDim来创建多维数据集。

SalaryDim表有 2 列(SalaryKey ,SalaryRange),AgeDim表类似(ageKey,AgeRange)。我的客户事实表有:

Customer
[CustId]
[CustName]
[AgeKey] --> foreign Key to AgeDim
[Salarykey] --> foreign Key to SalaryDim

我仍然必须在这些维度内定义我的范围。每次我将 Excel 数据透视表连接到我的多维数据集时,我只能看到这些硬编码定义的范围。

我的问题是如何直接从数据透视表动态定义范围,而不创建像AgeDim和SalaryDim这样的范围维度。我不想只停留在维度中定义的范围内。

未定义范围

定义的范围是 '0-25' 、 '26-30' 、 '31- 50'。我可能想把它改成 '0-20', '21-31' , '32-42' 等等,而且用户每次都要求不同的范围。

每次我改变它,我都必须改变维度。我该如何改进这个过程?

在多维数据集中实现解决方案会很棒,这样任何连接到多维数据集的 BI 客户端工具都可以定义范围,但我不介意是否有只使用 Excel 的好方法。

sql-server sql-server-2008
  • 3 个回答
  • 10630 Views
Martin Hope
AmmarR
Asked: 2012-06-27 03:58:59 +0800 CST

在数据库的所有表中插入虚拟数据的脚本

  • 4

我想要一个脚本,它可以遍历数据库中的所有表及其列,并根据列类型和大小插入虚拟数据,这样我就可以开始使用数据库进行测试,并能够运行查询和测试应用程序。

sql-server t-sql
  • 2 个回答
  • 21466 Views
Martin Hope
AmmarR
Asked: 2012-06-20 21:14:10 +0800 CST

添加新列并定义其在表中的位置

  • 7

我有 5 列的表 A:

TableA
--
Name
Tel
Email
Address

我想在电话和电子邮件之间添加一个新列(移动):

TableA
--
Name
Tel
Mobile
Email
Address

如果我使用

ALTER TABLE TableA
ADD COLUMN Mobile INT NOT NULL

移动列被添加到表的末尾。

有没有办法在不删除表并将数据移动到新表的情况下实现这一点?

sql-server-2008 database-design
  • 2 个回答
  • 47436 Views
Martin Hope
AmmarR
Asked: 2012-06-08 00:52:17 +0800 CST

在不指定 return_data_type 的情况下在 sql server 中创建一个函数

  • 2

我试图在 SQL Server 中创建一个标量值函数,而不指定 return_data_type

我希望能够根据函数调用者发送的参数返回任何数据类型

例如

CREATE FUNCTION GenerateRandomData 
(
    @Datatype varchar(20)
)
RETURNS <Return any datatype specified by @Datatype parameter>
AS
BEGIN
    -- Declare the return variable here
    IF @Datatype in ('varchar','char','nchar','nvarchar','text','ntext')
        Begin
            RETURN 'String'
        end
    Else
    IF @Datatype in ('int','bigint','smallint')
        Begin
            RETURN 100
        end
    Else
    IF @Datatype in ('datetime','smalldatetime')
    Begin
        RETURN getdate()
    end     

END
sql-server-2008 datatypes
  • 1 个回答
  • 268 Views
Martin Hope
AmmarR
Asked: 2012-06-06 22:38:44 +0800 CST

如何在oracle和sybase之间同步一个表

  • 1

我在Sybase(目标)中有一个表,我希望它与Oracle(源)中的表保持同步

我不能截断和填充 Sybase 中的表,因为它被应用程序使用,我只能添加新记录和更新更改,更改只发生在一列上。

在我的环境中,我有 Sybase、Oracle、SQL Server 和 .net 开发

什么是完成此任务的最佳、最简单和可靠的方法,我应该开发 DTS、.net 应用程序、使用 SQL Server 的链接服务器还是有更好的方法?

sql-server oracle
  • 1 个回答
  • 1294 Views
Martin Hope
AmmarR
Asked: 2012-05-31 23:30:15 +0800 CST

无法对 SQL 2000 中的作业进行任何更改

  • 2

我在我的 SQL 2000 服务器中有一个作业,这个作业用于执行 DTS,我想更改这个作业的时间表。

但每次我尝试更改删除或停止此作业时,我都会收到错误消息

ERROR 14274: Cannot add, update, or delete a job (or its steps or schedules) that originated from an MSX server. The job was not saved.

我周末要关闭系统,我无法停止这项工作...

sql-server-2000 jobs
  • 1 个回答
  • 1309 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve