小编Ioa*_*nis的帖子

使用2个连接和group by子句优化mysql查询

我有一个需要10-20秒的查询,但我确信它可以优化,我只是不够好做到这一点.我想要一些帮助和解释,以便我可以将它应用于类似的查询.这是我的查询:

SELECT
        `store_formats`.`Store Nbr`,
        `store_formats`.`Store Name`,
        `store_formats`.`Format Name`,
        `eds_sales`.`Date`,
         sum(`eds_sales`.`EPOS Sales`) AS Sales,
         sum(`eds_sales`.`EPOS Quantity`) AS Quantity
         FROM
         `eds_sales`
         INNER JOIN `item_codes` ON `eds_sales`.`Prime Item Nbr` = `item_codes`.`Customer Item`
         INNER JOIN `store_formats` ON `eds_sales`.`Store Nbr` = `store_formats`.`Store Nbr`
         WHERE
         `eds_sales`.`Store Nbr` IN ($storenbr) AND
         `eds_sales`.`Date`  BETWEEN '$startdate' AND '$enddate' AND
         `eds_sales`.`Client` = '$customer' AND
         `eds_sales`.`Retailer` IN ($retailer) AND
         `store_formats`.`Format Name` IN ($storeformat) AND
         `item_codes`.`Item Number` IN ($products)
         GROUP BY
         `store_formats`.`Store Name`,
         `store_formats`.`Store Nbr`,
         `store_formats`.`Format Name`,
         `eds_sales`.`Date`
Run Code Online (Sandbox Code Playgroud)

这是解释输出: 在此输入图像描述

正如您将在那里看到的那样,我尝试并创建了几个索引,其中涉及的列没有太大成功.主要的延迟是由我认为复制到临时表引起的.

这些是涉及的表格:

store_formats: …

mysql indexing temp-tables query-optimization mariadb

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

数据表 - 动态列

我知道之前已经问过这个问题,但我的变化与其他答案不符.

我有一个这种形式的json数据源:

    {
      "columns":[
          {"title":"Store Number","data":"StoreNbr"},
          {"title":"Store Name","data":"StoreName"},
          {"title":"2016-01-01","data":"2016-01-01"},
          {"title":"2016-01-02","data":"2016-01-02"}
      ],
      "data":[
          {"2016-01-01":"51","StoreNbr":"1","StoreName":"Store 1","2016-01-02":"52"}
      ]
  }
Run Code Online (Sandbox Code Playgroud)

我正在加载这样的数据:

$("#datatable").DataTable({
            "ajax": {
            "url": "http://myjsonurl-that-produces-above-response",
           "dataSrc": "data"
        },

    "columns": [
       {"title":"Store Number","data":"StoreNbr"},
       {"title":"Store Name","data":"StoreName"},
       {"title":"2016-01-01","data":"2016-01-01"},
       {"title":"2016-01-02","data":"2016-01-02"},
     ],   
     dom: "Bfrtip",
    "bProcessing": true,
    "bServerSide" : true
});
Run Code Online (Sandbox Code Playgroud)

以上工作完美无瑕.我需要的是动态加载列,如下所示:

"columns": $.getJSON($('#datatable').DataTable().ajax.url(), 
           function(json){
              return (JSON.stringify(json.columns));  
           });
Run Code Online (Sandbox Code Playgroud)

我得到的只是一个aDataSource错误.如果我在代码中的任何其他位置运行.getJSON,我会获得预期的响应,即我需要的响应.有任何想法吗?

我想让它工作,因为它最好是因为我的数据源不断变化基于我应用的影响json源,数据集等的过滤器.

更新:

表的初始化方式:

<script type="text/javascript"> 
          TableManageButtons.init();

TableManageButtons = function () {"use strict"; return { init: function () { handleDataTableButtons()  } }}();

var handleDataTableButtons = function () {
    "use strict";
    0 …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery json datatables

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