1

コーディングを容易にするために、いくつかのテーブルをビューに結合しました。そのビューでいくつかのテーブルを結合すると、パフォーマンスが低下します。より多くの行が表示される一方で、これらのクエリの速度は劇的に低下します。私はこのビューを使用して多くのコードを書いたので、これらのクエリをすべて書き直すソリューションは好きではありません:)。他のテーブルと結合するときにこのビューを高速化するエレガントなソリューションはありますか?

これはビューである私のクエリの1つですtickets_parsed:

SELECT detailValue, SUM(total_tickets) AS total_tickets, SUM(money_in) AS money_in, SUM(handling_charges) AS handling_charges
FROM (
    SELECT bsid, COUNT(*) AS total_tickets, SUM(amount_total) AS money_in, SUM(handling_charges) AS handling_charges
    FROM `bingo`.tickets_parsed
    WHERE tickettime BETWEEN '$date' AND '$date2a'
    AND ticketstatus <> 'CLOSED'
    GROUP BY bsid
    ORDER BY NULL
) AS sub
NATURAL JOIN betshop_details
WHERE detailID = 5
GROUP BY detailValue
ORDER BY NULL
4

1 に答える 1

0

クエリがサブクエリでビューを使用しているため、インデックスを使用できない可能性があります。しかし、サブクエリが必要かどうかはわかりません。

次のようなものを使用できます:-

SELECT a.detailValue, COUNT(*) AS total_tickets, SUM(b.amount_total) AS money_in, SUM(b.handling_charges) AS handling_charges
FROM bingo.tickets_parsed a
INNER JOIN betshop_details b
ON a.bsid = b.bsid
WHERE a.detailID = 5
AND b.tickettime BETWEEN '$date' AND '$date2a'
AND b.ticketstatus <> 'CLOSED'
GROUP BY a.detailValue
ORDER BY NULL
于 2013-11-07T12:02:01.447 に答える