2014-02-03 2 views
-1

У меня проблема с моим запросом из-за присоединения к множеству таблиц. Поэтому я хотел бы найти другие пути рядом с этим запросом, но в результате это одно и то же. Мой код приведен ниже:Стол очень медленный, как я могу его исправить?

SELECT 
    tblReturn.CountryID, 
    tblReturn.ShopLocationId, 
    tblReturn.ReturnID, 
    tblVoucherDetail.VoucherDetailID, 
    tblVoucherDetail.VoucherNo, 
    tblVoucherDetail.BarcodeVoucher, 
    tblReturn.DateTimeStamp AS DateTimeReturn, 
    tblClient.ClientNoString, 
    tblSaleDetail.BarCode, 
    tblReturnType.Description, 
    tblReturn.Reason, 
    tblSale.DateTimeStamp AS DateTimeSale,tblReturn.Status 
FROM 
(
    tblSale 
    INNER JOIN 
    (
     (
      (
       tblReturn 
       INNER JOIN 
       (
        tblVoucherDetail 
        INNER JOIN 
        tblVoucher ON tblVoucherDetail.VoucherID = tblVoucher.VoucherID 
       ) ON tblReturn.ReturnID = tblVoucher.ReturnID 
      ) 
      INNER JOIN 
       tblClient 
      ON 
       tblVoucherDetail.ClientNo = tblClient.ClientNo 
     ) 
     INNER JOIN 
      tblSaleDetail 
     ON 
      tblReturn.SaleDetailIDOrigin = tblSaleDetail.SaleDetailID) 
     ON 
      (tblSale.SaleID = tblSaleDetail.SaleID) 
     AND 
      (tblSale.ShopLocationID = tblSaleDetail.ShopLocationID)) 
     INNER JOIN 
      tblReturnType 
     ON 
      tblReturn.ReturnTypeID = tblReturnType.ReturnTypeID 
     WHERE 
      tblReturn.CountryID = 7 
     AND 
      tblReturn.ShopLocationID = 4 
     ORDER BY 
      tblVoucherDetail.VoucherDetailID DESC 

Как его настроить?

+1

Я бы предложил некоторые способы форматирования запроса – Nikola

+0

Это было очень медленно, поэтому я хотел бы изменить запрос или что-то еще, но все равно сохранить тот же результат. Кроме того, этот запрос я передаю от своего руководителя. Поэтому мне трудно это понять. – PokPunaHek

ответ

0

Оптимизируя ваш запрос хорошо (указатели - ваш друг), есть и другой подход, который вы можете рассмотреть с помощью этого множества объединений. «Денормализовать» вашу базу данных и создать таблицу, в которой есть именно те данные, которые вы хотите. Это включает в себя обновление ваших данных как в исходной таблице, так и в новой таблице «отчет», которую вы создаете. Для этого есть очевидные недостатки: (1) больше используемого пространства, (2) вам нужно либо писать код, чтобы синхронизировать данные, либо периодически перестраивать таблицу «отчет», (3) тонкие ошибки могут произойти, если вы данные делает выходить из синхронизации.

Однако иногда денормализация является самым простым и лучшим решением для неприятных проблем с объединением соединений.

Смежные вопросы