English 中文(简体)
表格和数据表
原标题:Truncate Table and UPDATE Statistics

是否需要在提瓜表之后更新表格统计数据,还是自动更新?

Q: 是否需要在表格上打字之后叫“UPD STATISTICS”吗?

最佳回答

Stats are not automatically updated until the stats are needed again. aka, the TRUNCATE does not do it. So "No".

最初的答复是“是”,因为它不是自动的,是北塞浦路斯土耳其共和国的一部分。 这取决于你如何理解问题:-

除此以外,如果需要询问,统计数据就会自动更新(例如增长变化次数)。 http://msdn.microsoft.com/en-us/library/ms190397(SQL.90).aspx“rel=“noreferer”>Index Statistics

每当查询执行计划所用的统计数据未能对当前统计数据进行测试时,就开始统计更新。

http://msdn.microsoft.com/en-us/library/ms190330(SQL.90).aspx”rel=“noreferer” STATS_DATE

SELECT
   name AS index_name, 
   STATS_DATE(object_id, index_id)
FROM
   sys.indexes 
WHERE
   object_id = OBJECT_ID( MyTruncatedTable )


Edit: I wanted to make I sure :-)

页: 1

IF OBJECT_ID( dbo.foo ) IS NOT NULL DROP TABLE dbo.foo
CREATE TABLE dbo.foo (
    bar int NOT NULL IDENTITY (1, 1) PRIMARY KEY,
    thing int NOT NULL
)
CREATE INDEX IX_thing ON dbo.foo (thing)

INSERT dbo.foo (thing) SELECT c1.object_id FROM sys.columns c1, sys.columns c2
SELECT
   name AS index_name, 
   STATS_DATE(object_id, index_id) AS AfterLoad
FROM sys.indexes WHERE object_id = OBJECT_ID( dbo.foo )

SELECT DISTINCT thing FROM dbo.foo ORDER BY thing DESC
SELECT
   name AS index_name, 
   STATS_DATE(object_id, index_id) AS AfterFirstQuery
FROM sys.indexes WHERE object_id = OBJECT_ID( dbo.foo )

DELETE TOP (50000) dbo.foo
SELECT
   name AS index_name, 
   STATS_DATE(object_id, index_id) AS AfterDelete
FROM sys.indexes WHERE object_id = OBJECT_ID( dbo.foo )

SELECT DISTINCT thing FROM dbo.foo ORDER BY thing DESC
SELECT
   name AS index_name, 
   STATS_DATE(object_id, index_id) AS After2ndQuery
FROM sys.indexes WHERE object_id = OBJECT_ID( dbo.foo )

TRUNCATE TABLE dbo.foo
SELECT
   name AS index_name, 
   STATS_DATE(object_id, index_id) AS AfterTruncate
FROM sys.indexes WHERE object_id = OBJECT_ID( dbo.foo )

SELECT DISTINCT thing FROM dbo.foo ORDER BY thing DESC
SELECT
   name AS index_name, 
   STATS_DATE(object_id, index_id) AS After3rdQuery
FROM sys.indexes WHERE object_id = OBJECT_ID( dbo.foo )
问题回答

由于您有无数据,在数据插入之前,这种数据将毫无意义,然后你将设法更新数据。

不要忘记,你可以自动更新统计数据,每天/每周管理和更新统计数据......

如果对此仍然有重大关切,那就不必打字,然后更新表格中的数据。





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签