小编aw *_*rud的帖子

如何使用有效日期数据加快对大型数据仓库表的查询?

所以我在查询一些非常大的表格.它们如此之大的原因是因为PeopleSoft每次对某些数据进行更改时都会插入新记录,而不是更新现有记录.实际上,它的事务表也是一个数据仓库.

这需要在其中嵌套选择的查询,以获取最新/当前行.它们都是有效的,并且在每个日期内(施放到一天)它们可以具有有效的序列.因此,为了获得当前记录user_id=123,我必须这样做:

select * from sometable st
where st.user_id = 123
and st.effective_date = (select max(sti.effective_date) 
  from sometable sti where sti.user_id = st.user_id)
and st.effective_sequence = (select max(sti.effective_sequence) 
  from sometable sti where sti.user_id = st.user_id
  and sti.effective_date = st.effective_date)
Run Code Online (Sandbox Code Playgroud)

这些表上有非常多的索引,我找不到任何能加速查询的东西.

我的麻烦在于我经常想要从这些表中获取有关个人的数据,可能有50个user_ids,但是当我加入我的表中只有少数几个这样的PeopleSoft表的记录时,事情就变成了废话.

PeopleSoft表位于我通过数据库链接访问的远程数据库中.我的查询看起来像这样:

select st.* from local_table lt, sometable@remotedb st
where lt.user_id in ('123', '456', '789')
and lt.user_id = st.user_id
and st.effective_date = (select max(sti.effective_date) 
  from sometable@remotedb sti where sti.user_id = st.user_id)
and st.effective_sequence = (select max(sti.effective_sequence) 
  from sometable@remotedb …
Run Code Online (Sandbox Code Playgroud)

sql oracle peoplesoft data-warehouse

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

是应该在应用程序层和数据库层中实施业务规则,还是只在其中一个中实施?

我一直在我的应用程序层(模型)和我的数据库层(引发错误的存储过程)中实施业务规则.

由于以下几个原因,我一直在复制我在两个地方的验证:

  1. 如果有条件,当他们在应用程序代码进行检查,当他们在数据库中检查之间切换,在数据库中的业务规则检查将保存一天.数据库还允许我以比我的应用程序代码更简单的方式锁定各种记录,所以在这里这样做似乎很自然.
  2. 如果我们直接做一些批量数据的插入/更新到数据库中,如果我将所有这些操作通过我的存储过程/函数其正在做的业务规则验证,也没有投入坏数据,即使我没有在我的机会如果我通过应用程序进行单输入,我会得到保护.
  3. 而只有在数据库中执行这些东西会对实际数据相同的效果,似乎不当首先做一个很好的努力,以验证它是否符合约束和业务规则之前,在数据库中,就把数据.

什么是正确的平衡?

database stored-procedures business-rules n-tier-architecture

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

我应该在CSS定义中为每个元素/类编写完整的层次结构路径吗?

我的样式表定义是否应该镜像DOM层次结构?如果我有:

<div id="container">
  <div class="item">
    <div class="property">
       <span id="1243"></span>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

当我想为每个房产设置样式时,我应该说:

.property { color: red; }
Run Code Online (Sandbox Code Playgroud)

或者我应该这样做

#container .item .property { color: red;}
Run Code Online (Sandbox Code Playgroud)

我用过这两个.我喜欢第一个简洁,因为如果层次结构改变我不需要更新它,但第二个帮助我阅读CSS.

css stylesheet

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

在0.9.0版本中,新的Backbone View'事件'哈希如何使用函数值而不是字符串?

Backbone 0.9.0更新日志说:

视图的事件哈希现在还可以包含直接函数值以及现有视图方法的字符串名称.

当我尝试以下操作时失败,说该事件的值是undefined.

var BB = Backbone.View.extend({
  'initialize': function() {

    this.$el.html('<input type="button" value="Click me!" />');
    jQuery('body').html(this.el);
  },

  'events': {
    'click input[type="button"]': this.buttonClicked
  },

  'buttonClicked': function() {
    alert('button clicked!');
  }

});

window.b = new BB()
Run Code Online (Sandbox Code Playgroud)

我误解了这个新功能吗?有人可以解释它的工作方式与我的预期不同吗?也许这只是我在定义时的'this'的JavaScript语法/值.

我习惯做的方式仍然有效:

'events': {
  'click input[type="button"]': 'buttonClicked'
},
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js backbone-views

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

我应该回滚失败的SELECT语句还是提交成功的语句?

出于习惯,我一直在我的应用程序代码中使用try/catch块来处理所有SQL查询,并在catch块的开头进行回滚.我也一直在承诺那些成功的.这是必要SELECT的吗?它是否释放了数据库方面的东西?select语句不会改变任何数据,所以它似乎有点无意义,但也许有一些我不知道的原因.

例如

try {
  $results = oci_execute($statement)
  oci_commit($connection);
  return $results;
}
catch {
  oci_rollback($connection)
  throw new SqlException("failed");
}
Run Code Online (Sandbox Code Playgroud)

php sql oracle transactions rollback

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

如何加快对无法添加索引的表的查询?

我通过DB Link远程访问几个表.它们非常标准化,每个数据都有效.在每个表中的数百万条记录中,只有约50k的子集是当前记录.

这些表由商业产品进行内部管理,如果我以任何方式添加索引或对其表进行更改,这将非常适合.

加快访问这些表的选项有哪些?

sql oracle database-indexes

6
推荐指数
2
解决办法
467
查看次数

两个异步Javascript函数实例是否有可能同时执行两个代码块?

我知道Javascript没有多个线程,但我想知道以下代码是否有任何破解的机会.我的理解是,除非调用异步函数,例如setTimeoutAJAX调用,否则一旦代码块开始执行,它就无法暂停直到它完成或调用异步函数.

基本上,用户选择多个复选框,然后点击一个按钮,执行其选择的AJAX处理.我的目标是拥有一个"Saving ..."图标,该图标仅在所有AJAX流程完成之前保持不变,并且在完成所有AJAX流程之后显示成功消息.

除非任何AJAX错误,只要整个jQuery.post执行中的回调函数不中断,我就不会看到if(numProcessed == toProcess)它将如何执行超过一次或少于一次.但是如果两个AJAX回调进入回调函数,两者都会在numProcessed得到以下内容之前递增计数器if,那么看起来内部的代码将被执行两次.

var numProcessed = 0;
var checkedBoxes = jQuery("input[type=checkbox]:checked");
var toProcess = checkedBoxes.size();

checkedBoxes.each(function() {
  jQuery.post('somepage.php',{...},function(results) {
    numProcessed++;
    if(numProcessed == toProcess) {
      jQuery("#saving-message").remove();
      jQuery("#feedback-panel").text('Successfully processed all selections.');
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery multithreading javascript-events

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

如何在不每次搜索广播组的情况下找出使用jQuery选择哪个单选按钮?

我知道我可以使用这里描述的内容:我怎么知道通过jQuery选择了哪个单选按钮?

jQuery("input[name=myradiogroup]:checked").val()获取所选的单选按钮值.但我想缓存无线电组并确定在以后的某个时间点选择了哪个值.

我想做的事情如下:

var myRadio = jQuery("input[name=myradiogroup]");
//some code
var value = myRadio.getCheckedButton().val();
Run Code Online (Sandbox Code Playgroud)

有什么方法可以做到这一点,或者我:checked每次想要找出所选值时都必须在其中显式运行选择器吗?

javascript jquery jquery-selectors radio-button

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

PHP可以返回ID为#0的资源吗?

我想知道有效的PHP资源是否有可能ID为0.我正在获取数据库连接资源,到目前为止它们都是非零正整数.只是好奇资源的潜在ID范围.

php resources

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

有没有办法在我的Mustache.js模板中解决嵌套结构中的名称冲突?

我的Mustache模板中存在名称冲突的问题(使用Mustache.js).这个例子说明了这两个问题:

我传递了这些数据:

{'recs': {'code': 'foo', 'id': 1
          'childRecs': [{'id': 2},
                        {'code': 'bar', 'id': 3}]
         }
}
Run Code Online (Sandbox Code Playgroud)

进入这个模板:

{{#recs}}
  Record ID: {{id}}
  {{#childRecs}}
    This child code is: [{{code}}] and its parent ID is: {{id}}
  {{/childRecs}}
{{/recs}}
Run Code Online (Sandbox Code Playgroud)

预期:

Record ID: 1
This child code is: [] and its parent ID is 1
This child code is: [bar] and its parent ID is 1
Run Code Online (Sandbox Code Playgroud)

实际:

Record ID: 1
This child code is [foo] and its parent ID is 2
This child code is …
Run Code Online (Sandbox Code Playgroud)

javascript mustache

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