我有一个连接了24个表(除了1个之外的所有表都是左外部连接)和83列的视图。当我从没有order by子句的视图中选择*时,它会在大约4:27秒内返回27k行所有列。如果我执行相同的select操作,但添加了一个'order by requestId‘子句,则需要83分钟才能完成。排序依据的列在原始表中编制索引。
我尝试过将它包装在Select * from (.......)中。order by requestId,但得到相同的结果。
关于去哪里找的建议
视图v_one
查询1:SELECT id FROM v_one LIMIT 2:52 ms
查询2:SELECT id FROM v_one ORDER BY id LIMIT 2:2413 ms
视图v_two
查询3:SELECT id FROM v_two LIMIT 2:260 ms
查询4:SELECT id FROM v_two ORDER BY id LIMIT 2:260 ms
为什么在视图v_one上使用order时,到目前为止的时差?
任何帮助都很感激
干杯
我有一个Postgresql数据库,在一个表中有超过1000亿行。
表模式如下:
id_1 | integer | | not null |
id_2 | bigint | | not null |
created_at | timestamp without time zone | | not null |
id_3
这个查询(存储过程的一部分)将被执行很多次:
SELECT TOP (@numRecords) BlogPost.postId,BlogPost.creationDate,
BlogPost.header,BlogPost.markedupContentAbstract
FROM dbo.BlogPost ORDER BY BlogPost.creationDate DESC
我应该在BlogPost表中的'creationDate‘字段上建立索引吗?我是否应该有一个对BlogPost记录进行排序的视图,然后从该视图中选择顶部?
详细信息:使用SQL Ser
我知道HEAP是一个没有聚集索引的表。但我对sys.indexes的以下定义并不十分清楚。据我所知,此系统视图包含表对象的每个索引行。但当我读到contains a row per index or heap时,我感到很困惑。问:为什么文档在下面的定义中使用单词heap,为什么每个索引or堆?
包含表对象的每个索引或堆的行。
参考文献:sys.indexes
我有两个这样的视图(简化):
CREATE VIEW BASE_VIEW AS
(
-- Simplified version, view actually does a lot more.
SELECT * FROM MYTABLE;
);
CREATE VIEW OUTER_VIEW AS
(
-- The where clause here makes this view return half the rows as the above BASE_VIEW
SELECT * FROM BASE_VIEW where SomeField
假设我设置了父表>子表。叫他们Shipment和Widget。
是否仍然要创建一个索引视图,该视图将具有父级(ShipmentId)的PK和最新子级的创建时(Widget.CreatedWhen)。
这是我要查找的查询:
SELECT widg.ShipmentId, MAX(widg.CreatedWhen) NewestWidget
FROM dbo.Widget widg
GROUP BY widg.ShipmentId
显然,该查询不能是索引视图,因为其中包含MAX。
,但是否有其他方法通过“索引视图合法”SQL获得类似的结果集?
我正在构建一个简单的主干应用程序,其中包含一个搜索表单和一些结果。我想:
允许用户更改“order”字段的值,并适当地更新URL和结果
确保当用户通过预置URL到达时,将显示正确的结果,所选的表单元素与URL和结果匹配。
我想我已经找到了正确的控制流使用,但我真的希望有人理智-检查它。基本上,我让我的视图直接更新URL,然后路由器完成更新模型的工作。其他视图则听取模型。
它似乎工作正常,但我必须在视图中手工构造URL,然后在路由器中再次解析它,这感觉是重复的。所以知道这是做骨干的正确方法还是我能做得更好,那就太好了。
这是伪码:
User changes value of s
我有许多存储过程,它们大多使用相同的表和视图,但它们的运行速度已经开始变慢。
我查看了其中一个的查询计划,它给了我两个警告。一种是在具有聚集索引的视图上的"Columns with no statistics“,该聚集索引是通过"no expand”提示进行查询的。
第二个警告出现在稍后的计划中有一个排序的地方:"Operator during tempdb to spill data with a spill level of 1...“
出于使用sql的目的,我编写了一个" create“脚本,并使用它创建了第二个存储过程。我运行了新的过程,仍然包含相同的s
我是CouchDb的新手。我必须按日期筛选记录(日期必须在两个值之间),并按名称或日期等对数据进行排序(这取决于用户在表中的选择)。在MySQL中,它看起来像
SELECT * FROM table WHERE date > "2015-01-01" AND date < "2015-08-01" ORDER BY name/date/email ASC/DESC
我不知道我是否可以用一个视图来解决所有这些问题。下面是我的地图示例:
function(doc) {
emit(
[doc.date, doc.name, doc.