I found the MSDN says that "table variables don't have statistics"
https://msdn.microsoft.com/en-us/library/dd535534(v=sql.100).aspx
Also the following article says the SQL Server doesn't support the statistics for the table variable even in SQL 2014
"temporary tables beat table variables easily because their ability to have statistics improves query optimization dramatically. That remains true with the enhancements in SQL Server 2014."
https://www.brentozar.com/archive/2014/04/table-variables-good-temp-tables-sql-2014/
Then I do a test with SQL Server 2014, and found the statistics for the table variable, so in the SQL 2014, now the table variable has the statistics , right?
USE tempdb;
DECLARE
@tb_table TABLE(
RowID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
,ProductName NVARCHAR(50) NOT NULL UNIQUE
,Indate DATETIME NOT NULL DEFAULT(GETDATE())
,index IX_Indate NONCLUSTERED (Indate)
);
DECLARE
@table_variable_id bigint
;
SELECT TOP 1 @table_variable_id = object_id
FROM tempdb.sys.all_objects AS A
WHERE parent_object_id = 0
ORDER BY create_date DESC
SELECT
statistics_name = st.name
,table_name = OBJECT_NAME(st.object_id)
,column_name = COL_NAME(stc.object_id, stc.column_id)
FROM tempdb.sys.stats AS st WITH(NOLOCK)
INNER JOIN tempdb.sys.stats_columns AS stc WITH(NOLOCK)
ON st.object_id = stc.object_id
AND st.stats_id = stc.stats_id
WHERE st.object_id = @table_variable_id
BTW, if we remove the line ",index IX_Indate NONCLUSTERED (Indate)" from the script above, we still can see two statistics records in the output in SQL server even in SQL2012.