小编gar*_*rik的帖子

数据转换实现

我正在使用我公司的数据库,为许多外部应用程序提供数据。所以我需要将相同的数据转换成很多动态视图。我可以看到一位前数据库开发人员已经实现了许多长链视图-函数-过程调用序列,以进行所有外部应用程序更常见的转换。我认为,这种架构和如此长的请求(存储过程调用一些函数,然后 funcs 调用一些视图,这个视图基于其他视图等等)是一个性能问题,至少查询优化器没有解决这些问题(请确认我的猜测)。这是好方法吗?它是性能下降的原因吗?如果是,我如何重新实现数据库的对象。此刻,我看到了执行此操作的以下步骤:

  • 分析源数据结构(自己的数据)
  • 分析所有外部系统(数据库必须提供什么格式)
  • 每个外部子系统的单独视图、函数、存储过程(我必须避免长链,对于许多子系统 db 对象,如果它是问题的原因)

谢谢你。

performance sql-server-2008 database-design database-recommendation

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

为什么 TRY CATCH 不抑制触发器中的异常

我在表()上有一个触发器,应将数据复制到其他数据库中的另一个(目标)。我正在尝试为数据实现自定义同步过程:我希望目标数据库(表)与源数据库(表)保持同步。我有 300 个表要同步。其中一些具有不同的物理数据结构。由于不同的数据架构和其他限制(实施时间、环境问题...),我无法使用 Sql Server 的标准方法(复制、DTS...)。我的目标是:此触发器不应影响源表中记录的插入、删除、更新。我试过这样的解决方案:

CREATE TRIGGER dbo.MyTrigger
...
   AFTER INSERT
....
BEGIN TRY
     --RAISERROR('Test error', 16, 2)
END TRY
BEGIN CATCH
  -- nothing
END CATCH
Run Code Online (Sandbox Code Playgroud)

我已经插入RAISEERROR来模拟错误。我希望,try/catch抑制该错误并成功插入(删除或更新)记录。别。这是行不通的。我有错误:

触发器执行期间出现错误。批处理已中止,并且用户事务(如果有)已回滚。

是否有可能以这种方式实现我的解决方案。如何捕获并保持(抑制)触发器中的任何错误?

try/catch如果它不起作用,在触发器中使用有什么意义?

trigger sql-server-2008 error-handling

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

MySQL 模拟中 SQL Server 的 TOP X

我在 MySQL 中寻找 SQL Server TOP (X) 模拟

在 SQL Server 中:

SELECT
  TOP 5
  Z
...
FROM
ORDER BY Z DESC
Run Code Online (Sandbox Code Playgroud)

如何在 MySQL 中做到这一点?

添加:

我找到了其他 RDBMS:返回 TOP N 记录

mysql

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

关于用户+用户组+用户类型+订阅模型的设计问题

我正在重新开发一个现有的 Web 应用程序,其源代码和底层数据库设计都很弱。我正在尝试以一种未来扩展更容易的方式开发事物,即:

  • 支持新的登录机制
  • 支持新的用户类型(即新的订阅计划)
  • 支持新的用户角色

这是我未完成的架构的一些屏幕截图。您是否发现此设计可能出现任何问题/数据不一致?

橙色方块是主键,蓝色方块是外键。必须将其分成两幅图像。

用户/订阅/授权组:

在此输入图像描述

用户组/订阅类型:

在此输入图像描述

提前致谢!

mysql foreign-key database-design primary-key

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

如何从大表中移动数据

有一个表(5-6 百万条记录)。我必须将 90% 的记录移动到其他数据库(表)。解决方案?

sql-server sql-server-2008-r2

4
推荐指数
2
解决办法
9040
查看次数

重建索引后性能下降

我正在优化一些使用数据库的服务器应用程序任务(查询、复杂计算、数据插入......)。执行此任务大约需要 16 分钟(我已经测试了 3 次以上),并且执行时间是可预测的。
然后我执行了脚本:

ALTER INDEX ALL ON dbo.'+ @TableName +' REBUILD
Run Code Online (Sandbox Code Playgroud)

对于数据库中的每个表。还有我现在看到的。我的任务的执行时间增加到 24 分钟。如果这些对这项任务没有任何外部影响,会发生什么?我正在等待性能提高(由于重建碎片索引)但性能下降。

performance index sql-server-2008 statistics

4
推荐指数
2
解决办法
1329
查看次数

如何在触发器中确定直接插入和通过存储过程插入

TableX 可以通过两种方式修改:

  • 客户执行“直接”插入
  • 客户端使用存储过程插入记录

如何在tableX的触发器中确定客户端的调用方式(直接或存储过程)

谢谢你。

trigger sql-server-2008

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

非确定性聚合结果

为什么我的查询是不确定的?

我有执行以下操作的查询:

select sum(float1*float2*coalesce(float3,1)) from table
Run Code Online (Sandbox Code Playgroud)

当我运行这个查询时,我得到了一个确定性的结果,但是当查询运行很多次时,情况似乎并非如此。

结果中的最后一个整数因不同的运行而异。

所有列都是 (float,null)

所有运行的浮动截断都应该相同吗?

sql-server-2008 query aggregate

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