MySQL查询视图替代方案

时间:2017-12-05 15:42:30

标签: php mysql select view

我在查询几个MySQL VIEWS时遇到了问题。

MySQL表每小时从一个从中央Oracle数据库中提取数据的进程生成。更新完成后,查询会自动更新VIEWS。 (我相信这是标准的。我可能是错的)。

此时,我正在使用PHP查询所述VIEWS以将数据返回到页面。这是我的问题开始的地方。

查询开始时,返回4条记录可能需要30多秒。 VIEW包含不超过30K的记录。但是当我尝试将更大的数据集返回到页面时,它现在会导致服务器冻结。

我的PHP脚本中的查询非常简单。它看起来如下:

SELECT 
    DISCHARGE_ETA, 
    TERMINAL_DISCH, 
    IMPORT_RAMP, 
    ORIG_RAMP_FINAL_DEST_ETA,  
    POOL_LOCATION_FROM_IMP,  
    POOL_LOCATION_TO_IMP,  
    ROAD_HAULIER_IMP
// few more columns
FROM  
    view1
WHERE  
    " . $_SESSION['where'] . ";

我正在使用jQuery将参数发送到PHP脚本。然后,PHP通过将所有参数插入WHERE子句来构建查询。然后通过JSON返回数据。

在MySQL中构建实际VIEW的查询更加强烈(目前未在此处显示)。

我的问题是:VIEWS是检索我需要的数据的最佳途径吗?

我认为查询TABLE而不是VIEW似乎更容易。也许更新VIEWS的相同每小时进程可以改为更新单个TABLE。这样,我可以查询TABLE而不是VIEW。

这是最好的选择吗?如果没有,请告诉我是否有其他选择。

修改

以下是EXPLAIN的结果

enter image description here

0 个答案:

没有答案
相关问题