Select tables optimized away在MySQL解释计划中有什么意义?
explain select count(comment_count) from wp_posts;
+----+-------------+---------------------------+-----------------------------+
| id | select_type | table,type,possible_keys, | Extra |
| | | key,key_len,ref,rows | |
+----+-------------+---------------------------+-----------------------------+
| 1 | SIMPLE | all NULLs | Select tables optimized away|
+----+-------------+---------------------------+-----------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
注意:explain plan输出已编辑为易读性.
我问PostgreSQL解释我的查询.部分解释是:
table_name --> Materialize
Run Code Online (Sandbox Code Playgroud)
具体化是做什么的?我正在加入两张桌子,而不是观看或类似的东西.
我正在尝试提高运行速度非常慢的查询的性能.完成实际执行计划后 ; 我发现Clustered Index Seek占82%.有什么方法可以改善Index Seek的表现吗?下面是执行计划中的问题索引查找的图像以及它正在使用的索引和表.
替代文字http://img340.imageshack.us/img340/1346/seek.png
指数:
/****** Object: Index [IX_Stu] Script Date: 12/28/2009 11:11:43 ******/
CREATE CLUSTERED INDEX [IX_Stu] ON [dbo].[stu]
(
[StuKey] ASC
)WITH (PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
表(为简洁起见省略了一些列):
CREATE TABLE [dbo].[stu](
[StuCertKey] [int] IDENTITY(1,1) NOT NULL,
[StuKey] [int] NULL
CONSTRAINT [PK_Stu] PRIMARY KEY NONCLUSTERED
(
[StuCertKey] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, FILLFACTOR = …Run Code Online (Sandbox Code Playgroud) 我已经全神贯注地查看了这个命令....重置SQL Server执行计划的命令是什么?
我一直在阅读有关执行计划和存储过程中动态参数问题的大量内容.我知道建议的解决方案.
不过,我的问题是,我读过的所有内容都表明SQL Server会缓存存储过程的执行计划.没有提到表值函数.我认为它适用于视图(出于兴趣).
每次调用表值函数时是否重新编译?
什么时候最好使用表值函数而不是存储过程?
基于使用从这篇文章获得的这个非常有用的SQL获取查询执行统计信息最常执行的存储过程 - 堆栈溢出:
SELECT TOP 100
qt.TEXT AS 'SP Name',
SUBSTRING(qt.text, qs.statement_start_offset/2, CASE WHEN (qs.statement_end_offset = -1) THEN LEN(qt.text) ELSE (qs.statement_end_offset - qs.statement_start_offset)/2 END) AS actual_query,
qs.execution_count AS 'Execution Count',
qs.total_worker_time/qs.execution_count AS 'AvgWorkerTime',
qs.total_worker_time AS 'TotalWorkerTime',
qs.total_physical_reads AS 'PhysicalReads',
qs.creation_time 'CreationTime',
qs.execution_count/DATEDIFF(Second, qs.creation_time, GETDATE()) AS 'Calls/Second'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.dbid = (SELECT dbid
FROM sys.sysdatabases
WHERE name = 'BSP')
ORDER BY qs.total_worker_time/qs.execution_count DESC
Run Code Online (Sandbox Code Playgroud)
我如何完全清除这些执行统计信息并从头开始?
这将特别有用,因为开发错误和测试已经导致例程被调用通常很多次,从而无视真实的使用级别.
看起来直接从Django中的查询集运行"解释"应该很容易,但我没有看到任何明显的如何做到这一点,并且"解释"在文档中搜索是一件困难的事情.
使用PostgreSQL 8.4.9,我对查询的PostgreSQL性能有一个奇怪的问题.此查询正在选择3D卷中的一组点,使用a LEFT OUTER JOIN添加相关ID列,其中存在相关ID.x范围的微小变化可能导致PostgreSQL选择不同的查询计划,执行时间从0.01秒到50秒.这是有问题的查询:
SELECT treenode.id AS id,
treenode.parent_id AS parentid,
(treenode.location).x AS x,
(treenode.location).y AS y,
(treenode.location).z AS z,
treenode.confidence AS confidence,
treenode.user_id AS user_id,
treenode.radius AS radius,
((treenode.location).z - 50) AS z_diff,
treenode_class_instance.class_instance_id AS skeleton_id
FROM treenode LEFT OUTER JOIN
(treenode_class_instance INNER JOIN
class_instance ON treenode_class_instance.class_instance_id
= class_instance.id
AND class_instance.class_id = 7828307)
ON (treenode_class_instance.treenode_id = treenode.id
AND treenode_class_instance.relation_id = 7828321)
WHERE treenode.project_id = 4
AND (treenode.location).x >= 8000
AND (treenode.location).x <= (8000 + 4736) …Run Code Online (Sandbox Code Playgroud) database postgresql performance sql-execution-plan postgresql-performance
以下三个SQL语句的性能是否有任何差异?
SELECT * FROM tableA WHERE EXISTS (SELECT * FROM tableB WHERE tableA.x = tableB.y)
SELECT * FROM tableA WHERE EXISTS (SELECT y FROM tableB WHERE tableA.x = tableB.y)
SELECT * FROM tableA WHERE EXISTS (SELECT 1 FROM tableB WHERE tableA.x = tableB.y)
Run Code Online (Sandbox Code Playgroud)
它们都应该工作并返回相同的结果集.但是如果内部SELECT选择tableB的所有字段,一个字段或只是一个常量,这是否重要?
当所有陈述行为相同时,是否有最佳做法?
我有一个Sqlite数据库,我想检查索引是否正确.MS SQL Analyzer非常适合分解查询执行和利用索引.
Sqlite有类似的工具吗?
sql ×6
sql-server ×4
performance ×3
postgresql ×2
database ×1
django ×1
function ×1
mysql ×1
sqlite ×1
statistics ×1