我已經使用此查詢來顯示我想要的結果。如何加快MySQL中的性能
它完美的工作,但我有一個問題。當數據庫中的數據有數千個或記錄變慢時。我聽說過數據按摩。
如果我按摩數據,它可以表現更好嗎?
<?php
public function search($searchterm)
{
$sql = "
SELECT
CAST(t.date as Date) AS Date,
SUM(t.Transaction)+SUM(r.Request) AS allTransaction,
SUM(t.Success)+SUM(r.RequestSuccess) AS allSuccess,
t.Transaction,
t.Success,
r.Request,
r.RequestSuccess
FROM
(
SELECT
date,
COUNT(DISTINCT no_a) AS Transaction,
SUM(t.status = 0) AS Success
FROM
transfer_tx_201503 AS t
WHERE
CAST(t.date as time) BETWEEN '00:00:00' AND '$searchterm'
GROUP BY CAST(date as Date) DESC
) AS t
JOIN
(
SELECT
date,
COUNT(DISTINCT no_a) AS Request,
SUM(r.status = 0) AS RequestSuccess
FROM
request_tx_201503 AS r
WHERE
CAST(r.date as time) BETWEEN '00:00:00' AND '$searchterm'
GROUP BY CAST(date as Date) DESC
) AS r
ON
CAST(t.date as date) = CAST(r.date as date)
GROUP BY
Date
DESC";
$q = $this->db->query($sql);
if($q->num_rows() > 0)
{
foreach($q->result() as $row)
{
$data[] = $row;
}
return $data;
}
}
,如果你能格式化查詢更好,所以它並不需要水平滾動,那簡直太好了。同樣,show的結果在每個表上創建表,並且查詢解釋計劃的結果將會有所幫助。 – 2015-04-02 02:03:26
爲什麼您要將日期列轉換爲Date |?無疑它是一個DATE或DATETIME列。日期也是一個保留字,並且不能用於列名。它仍然有效的事實是出於向後兼容性的原因,它並不適合。在任何語言中,畢竟有足夠的詞語不必使用保留詞。 Desides是幾號?出生日期,創建日期,預訂日期或什麼。使用一個意思是somethng的名字。 – 2015-04-02 02:12:38
日期數據類型是datatime。 – 2015-04-02 02:16:21