改善查询性能

时间:2019-01-05 18:08:19

标签: sql sql-server ssis etl lookup

我正在表A和表B之间进行查找操作(在SSIS中)。以下是两个表的示例:

//$post_thumbnail = Image::make($request->file('slika'));
//  $post_thumbnail->backup();


            $post_thumbnail = $request->file('slika');
            $filename  = time() . '.' . $post_thumbnail->getClientOriginalExtension();
             Image::make($post_thumbnail)->backup();
             ini_set('memory_limit', '256M');
            // $filename=Image::make($post_thumbnail);

我正在执行查找,将两个“ BID”都加入,从表B中获取TABLE A ( AID BID C ) TABLE B( BID D E ) DE是一个整数。 但是,由于表A有超过150000条记录,因此处理它要花费大量时间,大约需要10到15分钟。我已经在表B中创建了BID索引,但是它没有帮助:

BID

任何线索,我还能做些什么?

谢谢

2 个答案:

答案 0 :(得分:1)

在对大量数据执行查找时,最好使用SQL连接而不是使用查找。尝试使用从SQL命令读取的OLEDB源,在其中使用 <?php $sitedown=$_SERVER['DOCUMENT_ROOT'] . "/sitedown.php"; if (file_exists($sitedown)) { require_once($sitedown); exit; } require_once("session/use_memcache_sessions.inc"); require_once("session/authorization.inc"); require_once("router.inc"); require_once("template/pagelayout.inc"); session_start(); begin_page_template($_SESSION['user_prefs']); if (is_authorized($_SERVER['PHP_SELF'], $_SESSION['user_groups'])) { route_request($_SERVER['PHP_SELF']); } else { show_unauth_message(); } end_page_template(); 查询。

还要确保Join操作中包含的所有字段都已编入索引。

有关更多信息,请参考:

答案 1 :(得分:0)

您可以尝试包括要查找的列值:

var urlParams = new URLSearchParams(window.location.search);
$.get('{% url "line_chart_json" %}'+"?"+urlParams, function(data) {
    var ctx = $("#myChart").get(0).getContext("2d");
    new Chart(ctx, {
        type: 'line',
        data: data,
        });
});

但是,您的问题可能是正在处理的行数-因此您的查询生成了很多数据。如果您仅从CREATE INDEX tableb_bid_d_e ON [dbo].TableB(BID, D, E) 中选择了少数几行,则索引将大大加快查询的速度。如果要选择所有行-那么,需要处理大量数据。