小编War*_*ard的帖子

为什么临时表和子选择之间存在巨大的性能差异

这是一个关于SQL Server 2008 R2的问题

到目前为止,我不是DBA.我是一名java开发人员,必须不时编写SQL.(主要嵌入代码中).我想知道我在这里做错了什么,如果是的话,我可以做些什么来避免它再次发生.

Q1:

SELECT something FROM (SELECT * FROM T1 WHERE condition1) JOIN ...
Run Code Online (Sandbox Code Playgroud)

Q1有14个连接

Q2与Q1相同,但有一个例外.(SELECT*FROM T1 WHERE condition1)之前执行,并存储在临时表中.

这不是相关的子查询.

Q2:

SELECT * INTO #tempTable FROM T1 WHERE condition1
SELECT something FROM #tempTable  JOIN ...
Run Code Online (Sandbox Code Playgroud)

再次,14加入.

现在让我感到困惑的是,Q1花了> 2分钟(尝试了几次,以避免缓存发挥作用),而Q2(两个查询合并)花了2秒!是什么赋予了?

sql sql-server-2008-r2 query-performance

36
推荐指数
2
解决办法
6万
查看次数

Django在运行测试时忽略了路由器?

我有一个使用2个数据库连接的django应用程序:

  1. 要连接到应用程序要生成的实际数据
  2. 对于参考主数据系统,它完全不受我的控制

我遇到的问题是,我的webapp绝对不能触及第二个数据库中的数据.我通过使用2个(子)应用程序解决了大多数问题,每个数据库连接一个.我创建了一个路由器文件,用于路由任何迁移,并写入第一个应用程序

我还使用了第二个应用程序中的所有模型非托管

model.meta.managed = False
Run Code Online (Sandbox Code Playgroud)

选项.

可以肯定的是,我连接到第二个数据库的用户具有只读访问权限

这适用于迁移和运行.但是,当我尝试使用django testcase运行测试时,Django尝试在第二个数据库连接上删除并创建一个test_数据库.

如何确保Django永远不会更新/删除/插入/删除/截断第二个连接

我如何运行测试,不尝试创建第二个数据库,但创建第一个.

谢谢!

编辑:代码

model(对于第二个应用程序,不应该管理):

from django.db import models


class MdmMeta(object):
    db_tablespace = 'MDM_ADM'
    managed = False
    ordering = ['name']


class ActiveManager(models.Manager):
    def get_queryset(self):
        return super(ActiveManager, self).get_queryset().filter(lifecyclestatus='active')


class MdmType(models.Model):
    entity_guid = models.PositiveIntegerField(db_column='ENTITYGUID')
    entity_name = models.CharField(max_length=255, db_column='ENTITYNAME')

    entry_guid = models.PositiveIntegerField(primary_key=True, db_column='ENTRYGUID')

    name = models.CharField(max_length=255, db_column='NAME')
    description = models.CharField(max_length=512, db_column='DESCRIPTION')

    lifecyclestatus = models.CharField(max_length=255, db_column='LIFECYCLESTATUS')

    # active_manager = ActiveManager()

    def save(self, *args, **kwargs):
        raise Exception('Do not save MDM models!') …
Run Code Online (Sandbox Code Playgroud)

python database django

19
推荐指数
1
解决办法
971
查看次数

我可以使用TRAN&ROLLBACK进行打印预览吗?

我正在为已经存在的报告编写"预览".现在编程时,生成报告会更改数据库(它会为订单生成发票,然后生成报告).现在我需要一种方法来生成报告而不更改数据库.生成发票比删除它更容易,所以我在考虑以下几点:

  1. 开始交易
  2. 发票
  3. 将数据读入对象(数据集)
  4. 回滚事务
  5. 要报告的Feed数据集

这是一个好方法吗?我问,因为它似乎不像是使用交易的正确方式.

谢谢大家!!!

sql t-sql sql-server

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