我正在使用我公司的数据库,为许多外部应用程序提供数据。所以我需要将相同的数据转换成很多动态视图。我可以看到一位前数据库开发人员已经实现了许多长链视图-函数-过程调用序列,以进行所有外部应用程序更常见的转换。我认为,这种架构和如此长的请求(存储过程调用一些函数,然后 funcs 调用一些视图,这个视图基于其他视图等等)是一个性能问题,至少查询优化器没有解决这些问题(请确认我的猜测)。这是好方法吗?它是性能下降的原因吗?如果是,我如何重新实现数据库的对象。此刻,我看到了执行此操作的以下步骤:
谢谢你。
performance sql-server-2008 database-design database-recommendation
我在表(源)上有一个触发器,应将数据复制到其他数据库中的另一个(目标)。我正在尝试为数据实现自定义同步过程:我希望目标数据库(表)与源数据库(表)保持同步。我有 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如果它不起作用,在触发器中使用有什么意义?
我在 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 记录
我正在重新开发一个现有的 Web 应用程序,其源代码和底层数据库设计都很弱。我正在尝试以一种未来扩展更容易的方式开发事物,即:
这是我未完成的架构的一些屏幕截图。您是否发现此设计可能出现任何问题/数据不一致?
橙色方块是主键,蓝色方块是外键。必须将其分成两幅图像。
用户/订阅/授权组:

用户组/订阅类型:

提前致谢!
有一个大表(5-6 百万条记录)。我必须将 90% 的旧记录移动到其他数据库(表)。解决方案?
我正在优化一些使用数据库的服务器应用程序任务(查询、复杂计算、数据插入......)。执行此任务大约需要 16 分钟(我已经测试了 3 次以上),并且执行时间是可预测的。
然后我执行了脚本:
ALTER INDEX ALL ON dbo.'+ @TableName +' REBUILD
Run Code Online (Sandbox Code Playgroud)
对于数据库中的每个表。还有我现在看到的。我的任务的执行时间增加到 24 分钟。如果这些对这项任务没有任何外部影响,会发生什么?我正在等待性能提高(由于重建碎片索引)但性能下降。
TableX 可以通过两种方式修改:
如何在tableX的触发器中确定客户端的调用方式(直接或存储过程)
谢谢你。
为什么我的查询是不确定的?
我有执行以下操作的查询:
select sum(float1*float2*coalesce(float3,1)) from table
Run Code Online (Sandbox Code Playgroud)
当我运行这个查询时,我得到了一个确定性的结果,但是当查询运行很多次时,情况似乎并非如此。
结果中的最后一个整数因不同的运行而异。
所有列都是 (float,null)
所有运行的浮动截断都应该相同吗?
mysql ×2
performance ×2
trigger ×2
aggregate ×1
foreign-key ×1
index ×1
primary-key ×1
query ×1
sql-server ×1
statistics ×1