问题列表 - 第33172页

在视图中封装Postgres查询会使其非常慢

我有一个查询,在Postgres 8.4上运行大约5秒钟.它从连接到其他表的视图中选择数据,但也使用lag()窗口函数,即.

SELECT *, lag(column1) OVER (PARTITION BY key1 ORDER BY ...), lag(...)
FROM view1 v
JOIN othertables USING (...)
WHERE ...
Run Code Online (Sandbox Code Playgroud)

为方便起见,我创建了一个简单的新视图

SELECT *, lag(column1) OVER (PARTITION BY key1 ORDER BY ...), lag(...)
FROM view1 v
Run Code Online (Sandbox Code Playgroud)

然后从中使用SELECT,使用所有其他JOIN和过滤器.令我惊讶的是,这个查询在12分钟内没有完成(我在那时停止了).Postgres显然选择了不同的执行计划.我怎么能不这样做,即.使用与原始查询中相同的计划?我本以为视图不应该改变执行计划,但显然它确实如此.

编辑:更重要的是,我发现即使我将第一个视图的内容复制到第二个视图中,它仍然不会返回.

编辑2:好的,我已经充分简化了查询以发布计划.

使用视图(这不会在任何合理的时间内返回):

Subquery Scan sp  (cost=5415201.23..5892463.97 rows=88382 width=370)
  Filter: (((sp.ticker)::text ~~ 'Some Ticker'::text) AND (sp.price_date >= '2010-06-01'::date))
  ->  WindowAgg  (cost=5415201.23..5680347.20 rows=53029193 width=129)
        ->  Sort  (cost=5415201.23..5441715.83 rows=53029193 width=129)
              Sort Key: sp.stock_id, sp.price_date
              ->  Hash Join  (cost=847.87..1465139.61 rows=53029193 width=129) …
Run Code Online (Sandbox Code Playgroud)

postgresql performance view window-functions

5
推荐指数
1
解决办法
6063
查看次数

使用PHP/MySQL确保独特的行

我有以下代码,在运行时,应该更新一个"女王陛下佩内洛普"的"受害者"表(这是为某人工作的,诚实的),但每次执行代码时,它都会添加所有新行再次.我很确定我已经保护了这一点,但我猜不是.我在这做错了什么?

require_once 'victims.php';

 foreach( $victims as $vic )
 {
     $vic = mysql_real_escape_string($vic);

     if(!(mysql_query("
                      SELECT * FROM victims
                      WHERE ".$vic
                     )))
     {
         mysql_query("
                     INSERT INTO victims
                     (victim, amount) 
                     VALUES( '".$vic."', 0)
                    ");
     }

 }
Run Code Online (Sandbox Code Playgroud)

php mysql

0
推荐指数
1
解决办法
55
查看次数

访问地图中的最后一个条目

如何将特定的HashMap条目移动到Last位置?

例如,我有像这样的HashMap值:

HashMap<String,Integer> map = new HashMap<String,Integer>();

map= {Not-Specified 1, test 2, testtest 3};
Run Code Online (Sandbox Code Playgroud)

"未指定"可能处于任何位置.它可能首先出现在地图的中间.但我想把"未指定"移到最后一个位置.

我怎样才能做到这一点?提前致谢.

java maps hashmap

52
推荐指数
3
解决办法
9万
查看次数

什么版本的Java对于gc日志记录来说很慢?

我公司的支持团队告诉我,当我们打开时,某些版本的Java会对性能产生重大影响-verbose:gc.但是,我无法弄清楚是否是这种情况.

这个记录在某个时刻是否缓慢(ish),何时停止?

我问的原因是,对于将其应用于生产环境以调查潜在的内存泄漏(以及我们是否可以停止定期重启系统......)存在一些犹豫.

具体来说,我在谈论Java 1.4.2,我认为它引入了这个论点,以及它适用的服务包.

java performance logging garbage-collection jvm

4
推荐指数
1
解决办法
1112
查看次数

MI和隐式复制构造函数bug(是:在什么条件下模板可以作为复制构造函数?)

我很确定这个问题的答案是"从来没有,模板可以成为复制构造函数."

不幸的是,我花了3个小时搞清楚为什么我会收到关于递归的警告,跟踪它到复制构造函数,看着调试器发疯了,不让我看看递归代码,最后追踪到了一个缺失的'& '在基础构造函数中.

你看,我有这个复杂的基于策略的设计主机,现在已经工作了一段时间.我在一个中重写了两个策略,然后遇到了一个递归的复制构造函数.将其缩小为一个策略,该策略需要提供一个构造函数,该构造函数可以采用某种类型的XXX概念作为其参数,但在这种情况下,我只是丢弃它.所以我写了

struct my_policy
{
  template < typename T >
  my_polity(T const) {} // missing '&'...oops
};
Run Code Online (Sandbox Code Playgroud)

现在,my_policy是主机的基类(当然),这个小错误导致递归,其中主机的复制构造函数将链自身传递给这个模板化构造函数,而不是隐式的,编译器生成的复制构造函数.然后它当然会再次调用它的复制构造函数来创建临时的.

真正令人着迷的是我无法在简化代码中重新创建它.即使有一种模拟政策主持人的例子,我也无法实现.以下代码不会出现此问题:

#include <boost/utility/enable_if.hpp>
#include <boost/mpl/bool.hpp>

struct base
{
  template < typename T >
  base(T const) {}
};

struct another_base 
{
  int x;

  another_base(int y) : x(y) {}
};

template < typename T >
struct is_derived : boost::mpl::false_ {};

template < typename T1, typename T2 >
struct derived : T1, T2
{
  template < typename T >
  derived(T const& x, typename …
Run Code Online (Sandbox Code Playgroud)

c++ multiple-inheritance

5
推荐指数
2
解决办法
572
查看次数

Android App活动安装为多个图标

我的Android App有2项活动.登录屏幕和搜索屏幕.当我在模拟器或我的设备上部署应用程序时,我看到同一应用程序的2个图标.当我点击图标1时,它会打开屏幕1(登录屏幕),当我点击图标2时,它会打开屏幕2(搜索屏幕).我登录时的逻辑应显示搜索屏幕.不知道我什么时候犯了错误.

android

51
推荐指数
3
解决办法
3万
查看次数

如何创建POJO?

最近我开始听说"POJO"(Plain Old Java Objects).我用Google搜索,但仍然不理解这个概念.任何人都可以给我一个明确的POJO描述吗?

考虑具有变量"id,name,address,salary"的类"Person" - 我将如何为此场景创建POJO?代码是否低于POJO?

public class Person {
    //variables
    People people = new People();
    private int id;
    private String name;
    private String address;
    private int salary;


    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getAddress() {
        return address;
    }

    public int getSalary() {
        return salary;
    }

    public void setId() {
        this.id = id;
    }

    public void setName() {
        this.name = name;
    }

    public void setAddress() {
        this.address = address; …
Run Code Online (Sandbox Code Playgroud)

java pojo

66
推荐指数
3
解决办法
12万
查看次数

Django中的模型选择

我有一个模型可以选择CHOICES中定义的选项,如下所示:

CHOICES = (
    ('1', '1'),
    ('2', '2'),
    ('3', '3'),
)

class select(models.Model):
  first = models.CharField(max_length=3, choices=CHOICES)
  second = models.CharField(max_length=3, choices=CHOICES)
Run Code Online (Sandbox Code Playgroud)

我希望能够在管理页面中添加,删除或更改选项.所以我的方法是将CHOICES作为模型,但我不知道这是否是正确的方法.如果是,那我该怎么设置呢?谢谢.

django django-models django-admin

1
推荐指数
1
解决办法
817
查看次数

为什么ie7总是处于Quirks模式?

这是我正在使用的DOCTYPE和XML声明:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Run Code Online (Sandbox Code Playgroud)

但是IE7总是会出现怪癖模式......

有谁知道为什么?

提前致谢!

doctype internet-explorer-7

8
推荐指数
1
解决办法
424
查看次数

在dijkstra_shortest_paths中使用捆绑属性作为权重映射

也许这是一个愚蠢的问题,但我正在尝试使用BGL dijkstra_shortest_paths,特别是使用我的Edge捆绑属性的字段作为权重图.我的尝试目前导致了数十页的编译器错误,所以我希望有人知道如何帮助我.这基本上就是我的代码:

struct GraphEdge {
    float length;
    // other cruft
};
struct GraphVertex {
    ...
};
typedef boost::adjacency_list
<boost::vecS, boost::vecS, boost::directedS,
 GraphVertex, GraphEdge> GraphType;
Run Code Online (Sandbox Code Playgroud)

我可以毫无问题地填充图表,但是当涉及到呼叫时dijkstra_shortest_paths,我遇到了麻烦.我想用这个length领域.具体来说,我想知道在这样的通话中需要什么样的增强伏都教才能适应:

GraphType m_graph;

vector<int> predecessor(num_vertices(m_graph));
vector<float> distances(num_vertices(m_graph), 0.0f);
vector<int> vertex_index_map(num_vertices(m_graph));
for (size_t i=0; i<vertex_index_map.size(); ++i) {
    vertex_index_map[i] = i;
}

dijkstra_shortest_paths(m_graph, vertex_from, predecessor, distances, 
                        weightmap, vertex_index_map, 
                        std::less<float>(), closed_plus<float>(), 
                        (std::numeric_limits<float>::max)(), 0.0f,
                        default_dijkstra_visitor());
// How do I write the right version of weightmap here?
Run Code Online (Sandbox Code Playgroud)

这样,weightmap会以某种方式将我的图形的特定边缘与length属性中的相应字段相关联.我确信有一种简单的方法可以做到这一点,但BGL的文档对我来说是非常不透明的.如果您可以告诉我描述示例的文档中的哪个位置,我也会非常高兴.

先感谢您!

c++ boost-graph

9
推荐指数
3
解决办法
3527
查看次数