小编Jam*_*ber的帖子

改进PostgreSQL中的OFFSET性能

我有一个表,我在LIMIT和OFFSET之前进行ORDER BY,以便进行分页.

在ORDER BY列上添加索引会对性能产生巨大影响(与小LIMIT结合使用时).在一个500,000行表中,只要有一个小的LIMIT,我看到增加索引的10,000倍改进.

但是,索引对高OFFSET(即我的分页中的后续页面)没有影响.这是可以理解的:b树索引可以很容易地从头开始按顺序迭代但不能找到第n个项.

似乎有用的是计算的b树索引,但我不知道PostgreSQL中对这些的支持.还有其他解决方案吗?似乎优化大型OFFSET(特别是在分页用例中)并不是那么不寻常.

不幸的是,PostgreSQL手册简单地说"OFFSET子句跳过的行仍然必须在服务器内部计算;因此大的OFFSET可能效率低下."

database postgresql query-optimization

38
推荐指数
2
解决办法
2万
查看次数

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

使用左外连接注释Django查询集?

说我有一个模型:

class Foo(models.Model):
    ...
Run Code Online (Sandbox Code Playgroud)

和另一个基本上为每个用户提供以下信息的模型Foo:

class UserFoo(models.Model):
    user = models.ForeignKey(User)
    foo = models.ForeignKey(Foo)
    ...

    class Meta:
        unique_together = ("user", "foo")
Run Code Online (Sandbox Code Playgroud)

我想生成一个Foos的查询集,但注释与(可选)相关的UserFoo基于user=request.user.

所以它实际上是一个 LEFT OUTER JOIN on (foo.id = userfoo.foo_id AND userfoo.user_id = ...)

django

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

如何避免jQuery UI可拖动也触发click事件

A有一个大的div(地图)可以通过jQuery UI draggable拖动.div具有可点击的子div.

我的问题是,如果你拖动地图,在鼠标向上时,会在你开始拖动的任何子div上触发click事件.

如果拖动部分是拖动鼠标(如果只是点击没有拖动,而不是某人只需要点击事件,那么我如何阻止鼠标触发点击事件).

jquery jquery-ui

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

排序算法,其中成对比较可以返回比-1,0,+ 1更多的信息

大多数排序算法依赖于成对比较,确定A <B,A = B还是A> B.

我正在寻找利用成对比较功能的算法(以及奖励积分,Python中的代码),这种功能可以将更少的东西与更少的东西或更多的东西区分开来.所以也许而不是返回{-1,0,1},比较函数返回{-2,-1,0,1,2}或{-5,-4,-3,-2,-1,0,1 ,2,3,4,5}或甚至是间隔(-1,1)上的实数.

对于某些应用程序(例如接近排序或近似排序),这将使得能够以较少的比较来确定合理的排序.

language-agnostic sorting algorithm comparison

15
推荐指数
2
解决办法
2411
查看次数

如何在Git中重新父母

在每种情况下,哪些非交互式git命令实现了从Before到After的更改?

1A.重新养育我

之前:

A---B---C---D
Run Code Online (Sandbox Code Playgroud)

后:

  C'---D'
 /
A---B
Run Code Online (Sandbox Code Playgroud)

1B.重新育儿II

之前:

  C---D
 /
A---B
Run Code Online (Sandbox Code Playgroud)

后:

  C
 /
A---B---D'
Run Code Online (Sandbox Code Playgroud)

1C.重新养育子女III

之前:

  C
 /
A---B---D
Run Code Online (Sandbox Code Playgroud)

后:

  C---B'---D'
 /
A
Run Code Online (Sandbox Code Playgroud)

git

15
推荐指数
2
解决办法
6775
查看次数

如何在画布中强制显示更新

如果我连续快速地绘制画布,例如循环中的context.fillRect,浏览器似乎要等到循环结束才显示任何绘图(可能通过双缓冲)

有没有办法强制浏览器在每次绘制操作后显式或隐式更新显示?

html5 canvas

13
推荐指数
1
解决办法
2万
查看次数

哪种排序算法能够更快地提供近似/近似排序?

哪种排序算法产生的中间排序是好的近似值?

通过"良好的近似",我的意思是根据Kendall的tau和Spearman的脚趾等指标来确定有序列表与另一个列表的"远"(在这种情况下,确切的排序)

我想到的特定应用是人类进行主观成对比较的地方,并且可能无法进行所有n log n比较,例如heapsort或best-case quicksort.

哪些算法比其他算法更快将列表提升到接近/近似排序?

language-agnostic sorting algorithm

12
推荐指数
2
解决办法
1916
查看次数

如何使用任意匹配函数对Python列表进行差异/对齐?

我想以类似的方式对齐两个列表,difflib.Differ除了我希望能够定义用于比较项的匹配函数,而不仅仅是使用字符串相等,并且最好是一个可以返回介于0.0和之间的数字的匹配函数. 1.0,而不仅仅是一个布尔值.

所以,例如,假设我有两个列表:

L1 = [('A', 1), ('B', 3), ('C', 7)]
L2 = ['A', 'b', 'C']
Run Code Online (Sandbox Code Playgroud)

我希望能够写出这样的匹配函数:

def match(item1, item2):
    if item1[0] == item2:
        return 1.0
    elif item1[0].lower() == item2.lower():
        return 0.5
    else:
        return 0.0
Run Code Online (Sandbox Code Playgroud)

然后做:

d = Differ(match_func=match)
d.compare(L1, L2)
Run Code Online (Sandbox Code Playgroud)

并使用匹配函数进行diff.就像difflib,我宁愿算法给出更直观的Ratcliff-Obershelp类型结果,而不是纯粹的最小Levenshtein距离.

python diff

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

在PostgreSQL中将多对多关系转换为一对多关系

我有许多一对多之间foobar建模为表foo_barfoo_idbar_id.

我现在想把它建模为一对多(我的数据允许).

我已添加了一foo_idbar但现在我想迁移我的数据.所以,我想

UPDATE bar SET foo_id = f where id = b;
Run Code Online (Sandbox Code Playgroud)

每个f人和b一对来自哪里

SELECT foo_id AS f, bar_id AS b FROM foo_bar;
Run Code Online (Sandbox Code Playgroud)

是否可以在SQL(特别是PostgreSQL 9.0)中执行此操作?

我知道如果只有一个值,如何在UPDATE中执行子SELECT,但在这种情况下难以理解.

sql postgresql database-design many-to-many one-to-many

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