小编Bus*_*icK的帖子

mySQL:是否可以更快地进行此查询?

我有一个包含数百万条目的表"test".每行包含一个浮点"特征"和一个"计数"这个特征在项目"id"中出现的频率.该表的主键是"id"和"feature"的组合,即每个项目可能具有多个功能.每个商品ID通常有几百到几千个要素条目.

create table test 
(
    id      int not null,
    feature double not null,
    count   int not null
);
Run Code Online (Sandbox Code Playgroud)

任务是找到给定参考项目的500个最相似的项目.相似性以两个项目中相同特征值的数量来度量.我提出的查询在下面引用,但尽管正确使用索引,其执行计划仍包含"using temporary"和"using filesort",为我的用例提供了不可接受的性能.

select 
    t1.id,
    t2.id,
    sum( least( t1.count, t2.count )) as priority 
from test as t1
inner join test as t2 
     on t2.feature = t1.feature
where t1.id = {some user supplied id value} 
group by t1.id, t2.id 
order by priority desc
limit 500;
Run Code Online (Sandbox Code Playgroud)

关于如何改进的任何想法?可以修改模式并根据需要添加索引.

mysql sql optimization query-optimization

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

TSQL使触发器无声地失败

我在后插入触发器中有一些可能会失败的代码.这样的失败不是关键,应该不会回滚事务.如何在触发器中捕获错误并使事务的其余部分正常执行?

下面的例子显示了我的意思.触发器故意创建一个错误条件,结果原始插入("1")从不插入表中.尝试/ Catch似乎没有做到这一点.一个类似的,较旧的堆栈溢出问题没有产生答案,除了"防止错误首先发生" - 这并不总是可能/容易.

还有其他想法吗?

create table test 
(
  a int not null
);
go

create trigger testTrigger on test 
after insert as 
begin 
  insert into test select null;
end;
go

insert into test values ( 1 );
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server error-handling triggers sql-server-2008

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

压缩字符串存储

可以说我有许多包含非平凡长度的字符串(约3-4kb).字符串彼此不同但同时包含许多公共部分/子序列.平均而言,任何单个字符串的80-90%也包含在其他字符串中.是否有一种简单的方法可以自动利用这种巨大的冗余来压缩数据?
理想情况下,解决方案是C++并且对用户是透明的(即我可以使用它,就像我访问常规只读const std :: string而是从压缩存储中读取).

c++ compression string algorithm data-structures

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

一个库强制全局重载new/delete对我!

我正在维护一个大型闭源应用程序的插件(实现为dll).多年来一直运作良好.但是,随着SDK的最新更新,供应商重载全局运营商new和delete.这给我带来了很多麻烦.会发生什么是我的插件分配一个字符串.我将此字符串传递给静态链接库,该库修改它(更改它的长度,从而重新分配它).我的应用程序崩溃了.

原因当然是字符串存在于供应商分配的自定义堆上.静态链接库对此堆一无所知,并尝试在该内存上使用默认的new/delete运算符.繁荣.

现在的问题是:如何保持代码清洁并避免使用供应商的运营商?没有条件预处理器宏.我无法避免包含有问题的标题,因为它包含了2000行以上的插件所需的代码.我不能将提供的分配器传递到另一个库,因为它没有提供任何机制.我已经对供应商提出了相关问题.我不知道还能尝试什么?

附录:经过激烈的辩论后,我设法说服供应商再次从下一版本的SDK中删除重载.我通过简单地破解当前的SDK并手动删除重载来解决我的直接问题.感谢这个帖子中的所有建议.他们作为争论并进一步"证明"为什么重载首先是一个坏主意.

c++ memory-management allocation operator-overloading new-operator

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

如何将矢量投影到Python中由其正交矢量定义的平面上?

我有一个平面,plane A由它的正交向量定义,比方说(a, b, c).

(即向量(a, b, c)是正交的plane A)

我希望将一个矢量(d, e, f)投影到plane A.

我怎么能在Python中做到这一点?我认为必须有一些简单的方法.

python math 3d linear-algebra

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

屏幕空间中投影球体的半径

在投影到屏幕空间后,我试图找到球体的可见大小(以像素为单位).球体以原点为中心,相机正对着它.因此,投影的球体应该是二维的完美圆.我知道这样的1个存在的问题.但是,那里给出的公式似乎没有产生我想要的结果.它太小了几个百分点.我认为这是因为它没有正确考虑透视.在投射到屏幕空间之后,由于透视缩短(您只看到球体的顶部而不是整个半球2),您看不到球体的一半但显着更少.

如何导出精确的2D边界圆?

math 3d geometry projection

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

three.js Object3D.clone()会创建几何的深层副本吗?

我正在使用collada装载机加载模型.加载器返回一个带有许多子网格的Object3D"dae".我想多次实例化父"dae"对象而不重复网格.我可以使用dae.clone()吗?

换句话说:我想制作浅色的副本,它们都有自己的变换矩阵,但共享相同的几何形状.最有效的方法是什么?

three.js

4
推荐指数
2
解决办法
9765
查看次数

调试器中的std :: map clear()性能?

附加的,简单的测试程序测试清空一个简单的std :: map的性能.使用MSVC 2008和2010,从命令提示符执行调试构建将花费<30秒,但在调试器中执行时将花费大约3分钟.对clear()的调用完全是对差异的责任.如果我进入调试器,callstack将始终指向HeapFree.
问题:为什么巨大差异?我可以以某种方式更改调试堆设置,以便在调试器中执行时会很快吗?

#include <map>

int
main ( int, char )
{
    std::map< time_t, double > test;
    for ( int i = 0; i < 1000000; ++i )
    {
        test[i] = i / 3.14;
    }
    test.clear();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ debugging performance stl visual-studio

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