Aşağıda bu sorgu var. TblOrder, tblItems, tblOrder_archive, tblItem_archive: dahil 4 ana tablolar vardır. Ana tablo sorguları yavaşlatmak için değil Siparişler ve Öğeleri bir kaç ay sonra tabloların arşivlenen sürümleri üzerinde taşındı olsun. (Satış ve trafik gerçekten yüksek). Yani satış rakamları elde etmek, i tablolar (arşiv ve olmayan arşiv) her sette ne gerek seçin .. sendika onları .. sendika üzerinde bir grup yapmak .. sonra sonucu bazı matematik yapmak.
Sorun sıra (sırası zaman aralığı) herhangi önemli miktarda .. çalıştırmak için sorgu için bu kadar uzun sürer ki o zamanlar dışarı. Aklıma tüm tuşları eklendi ve hala süper yavaş çalışıyor olması.
Daha ben daha hızlı bu çalışma için yapabileceğiniz var mı? I farklı şekilde yazabilir miyim? I farklı indeksler kullanabilir miyim?
ya ben ilk seti her tablodan verileri alır bir komut dosyası daha sonra php komut matematik onları birleştirmek için geliyor yazmak gerekir?
Yardımlarınız için teşekkürler.
SELECT
description_invoice
, supplier
, type
, sum(quantity) AS num_sold
, sum(quantity*wholesale) AS wholesale_price
, sum(quantity*price) AS retail_price
, sum(quantity*price) - sum(quantity*wholesale) AS profit
FROM (
SELECT
tblOrder.*
, tblItem.description_invoice
, tblItem.type
, tblItem.product_number
, tblItem.quantity
, tblItem.wholesale
, tblItem.price
, tblItem.supplier
FROM tblOrder USE KEY (finalized), tblItem
WHERE
tblItem.order_id = tblOrder.order_id
AND
finalized=1
AND
wholesale <> 0
AND (order_time >= 1251788400 AND order_time <= 1283669999)
UNION
SELECT
tblOrder_archive.*
, tblItem_archive.description_invoice
, tblItem_archive.type
, tblItem_archive.product_number
, tblItem_archive.quantity
, tblItem_archive.wholesale
, tblItem_archive.price
, tblItem_archive.supplier
FROM tblOrder_archive USE KEY (finalized), tblItem_archive
WHERE
tblItem_archive.order_id=tblOrder_archive.order_id
AND
finalized=1
AND
wholesale <> 0
AND (order_time >= 1251788400 AND order_time <= 1283669999)
) AS main_table
GROUP BY
description_invoice
, supplier,type
ORDER BY profit DESC;