我正在创建一个带有如下查询的临时表:
CREATE TEMPORARY TABLE temp_table
SELECT * FROM regular_table
WHERE 1
Run Code Online (Sandbox Code Playgroud)
但是regular_table在某些字段上有FULLTEXT索引.我尝试在新的临时表上进行FULLTEXT搜索,我收到一条错误,告诉我"无法找到与列列表匹配的FULLTEXT索引 ".因此,索引不会复制到新表.有没有办法强迫这个?
谢谢.
我试图使用临时表作为SELECT语句的中间结果持有者.问题是虽然我无法在其他查询语句中多次访问临时表,我希望这可能会使临时表无用.
是否有替代MySql中的临时表,允许我提取我的SQL语句.
我不能使用存储过程(无法从公司使用的Web框架版本访问它们),我不想使用游标.
编辑:
好吧,我的代码看起来有点像这样:
临时表创建:
CREATE TEMPORARY TABLE dates_with_entries (
seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
datum VARCHAR(32)
);
INSERT INTO dates_with_entries (datum) SELECT datum AS Datum from project_times
WHERE user_id = 20 GROUP BY datum ORDER BY datum desc LIMIT 13;
Run Code Online (Sandbox Code Playgroud)
那么我使用临时表的代码看起来有点像这样(我把它简化为我遇到的问题..)
SELECT
...
FROM (SELECT entrie_date AS datum FROM dates_with_entries ) AS sub_result
INNER JOIN project_times
ON sub_result.datum = project_times.datum AND project_times.user_id = 20
LEFT JOIN works AS w ON project_times.work_id = w.id
LEFT JOIN sub_projects …Run Code Online (Sandbox Code Playgroud) 我正在使用MS SQL驱动程序3.0版通过标准JDBC连接执行存储过程.
我发现当我创建数据并将数据插入临时表时,存储过程无法正常执行.
Java代码不会抛出异常,但javax.sql.ResultSet会是null.
存储过程中的失败点是我取消注释的时候 INSERT INTO #TBL CLM_NAME VALUES('VAL')
当我使用SQL Studio Manager执行语句时,它可以毫无困难地执行,并且数据按预期执行.
有没有人遇到这个或知道为什么会这样?
最初我认为它是因为SQL驱动程序,我仍然认为它是?
谢谢.
我想知道在Oracle中将临时表转换为永久表的命令是哪一个.
其他问题是关于指数.临时表中使用的索引与永久表中使用的索引相同,如果我转换它?
我在SQL Server存储过程中使用了if else语句.
我会选择记录并存储在临时表中.但是我必须在每种情况下使用不同名称的临时表.
是否可以在每个if else条件下使用相同的临时表?
这是我的存储过程
alter procedure GetRecords
@Id int ,
@status varchar(10),
@EmpId int,
@PageIndex INT = 1,
@PageSize INT = 10,
@RecordCount INT OUTPUT
as
begin
if(@Id = 1)
begin
select ROW_NUMBER() OVER (ORDER BY Id desc)AS RowNumber,Id,dDateTime,[Status],Stage
INTO #Results from DiscrepencyMaster where [Status]=@status
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
end
else if (@Id …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我在哪里使用CTE,temp table和table variable?
我读到他们的差异,但我对他们的用法感到困惑.请帮忙.
谢谢.
temp-tables common-table-expression table-variable sql-server-2014
我正在SQL Server 2008上调试存储过程,并且有以下内容:
INSERT INTO #tempTable (ID, Name)
SELECT ID, Name FROM dbo.MYTABLE WHERE dbo.MYTABLE.Old >= 15
Run Code Online (Sandbox Code Playgroud)
如何在调试时查看#tempTable中的数据?
我有一个需要10-20秒的查询,但我确信它可以优化,我只是不够好做到这一点.我想要一些帮助和解释,以便我可以将它应用于类似的查询.这是我的查询:
SELECT
`store_formats`.`Store Nbr`,
`store_formats`.`Store Name`,
`store_formats`.`Format Name`,
`eds_sales`.`Date`,
sum(`eds_sales`.`EPOS Sales`) AS Sales,
sum(`eds_sales`.`EPOS Quantity`) AS Quantity
FROM
`eds_sales`
INNER JOIN `item_codes` ON `eds_sales`.`Prime Item Nbr` = `item_codes`.`Customer Item`
INNER JOIN `store_formats` ON `eds_sales`.`Store Nbr` = `store_formats`.`Store Nbr`
WHERE
`eds_sales`.`Store Nbr` IN ($storenbr) AND
`eds_sales`.`Date` BETWEEN '$startdate' AND '$enddate' AND
`eds_sales`.`Client` = '$customer' AND
`eds_sales`.`Retailer` IN ($retailer) AND
`store_formats`.`Format Name` IN ($storeformat) AND
`item_codes`.`Item Number` IN ($products)
GROUP BY
`store_formats`.`Store Name`,
`store_formats`.`Store Nbr`,
`store_formats`.`Format Name`,
`eds_sales`.`Date`
Run Code Online (Sandbox Code Playgroud)
正如您将在那里看到的那样,我尝试并创建了几个索引,其中涉及的列没有太大成功.主要的延迟是由我认为复制到临时表引起的.
这些是涉及的表格:
store_formats: …
我有一个大约1.6秒运行的查询并返回150Kish行.我一直在从这个查询构建一个基于内存引擎的临时表,这个操作大约需要6.5秒.我已经通过mysql网站上的大量文档进行了筛选,并且在临时表上使用了索引(当我有索引而没有它们时几乎没有任何差别)试图找到一些方法让表创建有点表现更好.有没有人对配置选项有什么建议可以加快创建内存临时表(或非临时表)?要清楚我正在寻找什么(我认为)是某种表配置选项可以提高创建的速度.我已经浏览了mysql 5.7网站上列出的大部分内容,但似乎没有什么能改变在内存中创建临时/标准表所需的时间.
CREATE TEMPORARY TABLE
IF NOT EXISTS myTempTable
(ugID INT,stID INT, INDEX st (`st`) )
ENGINE=MEMORY AS
select ugID, stID
from a_complex_query_that_runs_in_under_2_seconds_but_takes_6_to_write_to_a_temptable_with_150k_rows
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived15> ALL NULL NULL NULL NULL 559
1 PRIMARY creatorEntity eq_ref PRIMARY PRIMARY 4 creatorAssignment.OwnerObjectID 1 Using index
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 152580 Using where; Using join buffer
15 DERIVED VMAssignment ref AssociatedObjectID,AssociatedObject AssociatedObject 2 2902 Using where
2 DERIVED test_ …Run Code Online (Sandbox Code Playgroud) 我正在使用node-mssql并从docker连接到2017 sql服务器。
问题
在我的整个脚本中,
var test = await dbRequest().batch("SELECT * FROM #myTestTable");
间歇地,我得到了错误RequestError: Invalid object name '#myTempTable'。因此,我在sql.ConnectionPool上放了一些手表以识别发生什么情况导致错误。事实证明,在大多数执行行中,pool.pool.available变量为1,如下所示。
无论何时发生错误,在逐步进入下一行之前,pool.pool.available都将为0,如下所示:
如果在运行前立即发生这种情况
var test = await dbRequest().batch("SELECT * FROM #myTestTable");
它将失败
RequestError: Invalid object name '#myTempTable'
我尝试过的
我曾尝试通过将池配置发送到Tedious {min: 100, max: 1000, log: true},但不幸的是,它似乎被忽略了(https://www.npmjs.com/package/mssql#connection-pools)
var sqlServerProperty = {
user: '',
password: '',
server: '192.168.1.13',
database: 'CCTDB',
pool: {min: 1,
max: 100,
idleTimeoutMillis: 30000}
};
Run Code Online (Sandbox Code Playgroud)
我还尝试了一个pool.request()并从中运行所有dbRequest。没有骰子!
任何帮助表示赞赏!
dbRequest()是什么样的?
// the entire script is wrapped in an async function
var …Run Code Online (Sandbox Code Playgroud) temp-tables ×10
mysql ×4
sql-server ×3
indexing ×2
sql ×2
java ×1
jdbc ×1
mariadb ×1
node.js ×1
oracle ×1
performance ×1
procedure ×1
t-sql ×1
tedious ×1