这是一个关于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秒!是什么赋予了?
我有一个使用2个数据库连接的django应用程序:
我遇到的问题是,我的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) 我正在为已经存在的报告编写"预览".现在编程时,生成报告会更改数据库(它会为订单生成发票,然后生成报告).现在我需要一种方法来生成报告而不更改数据库.生成发票比删除它更容易,所以我在考虑以下几点:
这是一个好方法吗?我问,因为它似乎不像是使用交易的正确方式.
谢谢大家!!!