标签: temp-tables

Linq的临时表 - 任何人都看到这个问题?

试图解决:

Linq.包含大量设置会导致TDS错误

我想我偶然发现了一个解决方案,我想看看它是否是一种解决问题的犹太方式.

(简短摘要)我想对一个记录ID列表进行linq-join,这些记录id不是(完全或至少很容易)在SQL中生成的.这是一个很大的列表,经常超过TDS RPC调用的2100项限制.所以我在SQL中所做的就是把它们放在一个临时表中,然后在我需要它时加入它.

所以我在Linq做了同样的事情.

在我的MyDB.dbml文件中,我添加了:

<Table Name="#temptab" Member="TempTabs">
  <Type Name="TempTab">
    <Column Name="recno" Type="System.Int32" DbType="Int NOT NULL" 
          IsPrimaryKey="true" CanBeNull="false" />
  </Type>
</Table>
Run Code Online (Sandbox Code Playgroud)

打开设计器并关闭它会在那里添加必要的条目,但为了完整起见,我将引用MyDB.desginer.cs文件:

   [Table(Name="#temptab")]
   public partial class TempTab : INotifyPropertyChanging, INotifyPropertyChanged
   {

           private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);

           private int _recno;

#region Extensibility Method Definitions
partial void OnLoaded();
partial void OnValidate(System.Data.Linq.ChangeAction action);
partial void OnCreated();
partial void OnrecnoChanging(int value);
partial void OnrecnoChanged();
#endregion

           public TempTab()
           {
                   OnCreated();
           }

           [Column(Storage="_recno", DbType="Int NOT NULL", IsPrimaryKey=true)]
           public int recno
           {
                   get …
Run Code Online (Sandbox Code Playgroud)

t-sql linq temp-tables

7
推荐指数
1
解决办法
4195
查看次数

全局临时表删除操作

如何检查SQL服务器中是否存在全局临时表,如果是,则删除该全局临时表?

我正在尝试执行此操作:

IF OBJECT_ID('##Table', 'U') IS NOT NULL  
  DROP TABLE ##Table
Run Code Online (Sandbox Code Playgroud)

......但它不起作用.

sql t-sql sql-server sql-server-2005 temp-tables

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

SQL Server,带截断的临时表和带删除的表变量

我有一个存储过程,我在其中创建一个临时表,通常包含1到10行.在存储过程中,此表被截断并填充多次.它被截断,因为这比删除更快.当我因使用删除而受到惩罚(截断对表变量不起作用)时,通过用表变量替换此临时表,我是否可以获得任何性能提升

虽然表变量主要在内存中,并且通常比临时表更快,但是我必须通过删除而不是截断来获得任何好处吗?

sql-server-2005 temp-tables

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

查看MySQL临时表 - 不在会话中

我目前有一个脚本正在运行,并且认为运行不会花这么长时间,脚本正在修改临时表.

我知道临时表只存在于当前会话中,但无论如何都要查看它们在会话外保存的数据吗?

原因是我想知道我的脚本将继续运行多长时间,如果我能看到临时数据,那么我就能弄明白.

mysql temp-tables

7
推荐指数
1
解决办法
6563
查看次数

当我有一个很大的ID列表时,如何在SQL Server中创建临时表

我有一个原始ID列表,我应该放入临时表.我不确定它在SQL Server中是如何工作的:

我知道一般格式:

select PID into #myPIDs
from ... ?
Run Code Online (Sandbox Code Playgroud)

我已经有一个大约30个PID的列表,我将使用它.他们看起来像这样:

'U388279963',
'U388631403',
'U389925814'
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?谢谢!

database sql-server temp-tables

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

为什么临时表比表变量更快?

为什么临时表比SQL Server中的连接的表变量更快?

注意:在两种情况下,表都有PK,表通过PK与其他"物理"表连接.

sql-server join temp-tables table-variable

7
推荐指数
2
解决办法
9831
查看次数

如何插入SQL Server中的现有临时表

我试图将两个select语句执行到一个查询,将数据泵入临时表.第一个查询将有5列,而第二个查询只有一列.

第一个可以通过以下方式实现:

Select a.ID AS [a], 
       b.ID AS [b], 
       c.ID AS [c]
INTO #testingTemp
FROM
....
Run Code Online (Sandbox Code Playgroud)

现在我有第二个查询试图将数据输入#testingTemp:

Select z.ID AS [c]
INTO #testingTemp
FROM
....  
Run Code Online (Sandbox Code Playgroud)

但我的问题是There is already an object named #testingTemp in the database

我试图在互联网上搜索解决方案,但大多数人只是在我的第一部分面临问题,但显然没有人试图在第二次查询时扩展临时表?

sql sql-server temp-tables

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

存储过程:使用临时表减少代码重复

在对我的存储过程进行了许多更改之后,我认为它需要重新分解,主要是因为代码重复.如何克服这些重复:

IF @transExist > 0 BEGIN
    IF @transType = 1 BEGIN --INSERT
        SELECT
            a.dayDate,
            a.shiftName,
            a.limit,
            b.startTimeBefore,
            b.endTimeBefore,
            b.dayAdd,
            b.name,
            b.overtimeHours,
            c.startTime,
            c.endTime
        INTO 
            #Residence1
        FROM 
            #ShiftTrans a 
            RIGHT OUTER JOIN #ResidenceOvertime b
                ON a.dayDate = b.dayDate
            INNER JOIN ShiftDetails c
                ON c.shiftId = a.shiftId AND 
                c.shiftTypeId = b.shiftTypeId;

        SET @is_trans = 1;
    END ELSE BEGIN
        RETURN ;
    END
END ELSE BEGIN
    IF @employeeExist > 0 BEGIN
        SELECT
            a.dayDate,
            a.shiftName,
            a.limit,
            b.startTimeBefore,
            b.endTimeBefore,
            b.dayAdd,
            b.name,
            b.overtimeHours,
            c.startTime,
            c.endTime
        INTO 
            #Residence2 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server refactoring stored-procedures temp-tables

7
推荐指数
2
解决办法
378
查看次数

无法在Postgres交叉表查询中使用公用表表达式

我正在尝试使用Postgres的tablefunc扩展CROSSTAB功能对某些数据执行数据透视操作.数据需要首先进行一些转换,我在一些常见的表表达式中执行.

但是,它似乎CROSSTAB无法看到那些表达式的结果.

例如,从临时表中获取数据的查询工作正常:

CREATE TEMPORARY TABLE
  temporary_table
    (name, category, category_value)
ON COMMIT DROP
AS (
  VALUES
    ('A',  'foo',    1             ),
    ('A',  'bar',    2             ),
    ('B',  'foo',    3             ),
    ('B',  'bar',    4             )
);

SELECT * FROM
  CROSSTAB(
    'SELECT * FROM temporary_table',
    $$
      VALUES
        ('foo'),
        ('bar')
    $$
  ) AS (
    name TEXT,
    foo  INT,
    bar  INT
  );
Run Code Online (Sandbox Code Playgroud)

并且,如预期的那样,产生以下输出:

name | foo     | bar
text | integer | integer
---- | ------- …
Run Code Online (Sandbox Code Playgroud)

sql postgresql pivot temp-tables crosstab

7
推荐指数
1
解决办法
1492
查看次数

将临时表与SQLAlchemy一起使用

我试图使用临时表与SQLAlchemy,并将其连接到现有的表.这就是我到目前为止所拥有的

engine = db.get_engine(db.app, 'MY_DATABASE')
df = pd.DataFrame({"id": [1, 2, 3], "value": [100, 200, 300], "date": [date.today(), date.today(), date.today()]})
temp_table = db.Table('#temp_table',
                      db.Column('id', db.Integer),
                      db.Column('value', db.Integer),
                      db.Column('date', db.DateTime))
temp_table.create(engine)
df.to_sql(name='tempdb.dbo.#temp_table',
          con=engine,
          if_exists='append',
          index=False)
query = db.session.query(ExistingTable.id).join(temp_table, temp_table.c.id == ExistingTable.id)
out_df = pd.read_sql(query.statement, engine)
temp_table.drop(engine)
return out_df.to_dict('records')
Run Code Online (Sandbox Code Playgroud)

这不会返回任何结果,因为插入语句to_sql不会运行(我认为这是因为它们运行使用sp_prepexec,但我不完全确定).

然后,我尝试只是写出来的SQL语句(CREATE TABLE #temp_table...,INSERT INTO #temp_table...,SELECT [id] FROM...),然后运行pd.read_sql(query, engine).我收到错误消息

此结果对象不返回行.它已自动关闭.

我想这是因为声明不仅仅是SELECT

我该如何解决这个问题(任何一个解决方案都可以工作,虽然第一个会更好,因为它避免了硬编码的SQL).要清楚,我无法修改现有数据库中的模式 - 它是供应商数据库.

python sql-server sqlalchemy temp-tables pandas

7
推荐指数
1
解决办法
7726
查看次数