我有一個查詢MySQL查詢優化與內部聯接
$query = "SELECT DISTINCT report_date,weekreportDate FROM contract_sales a
INNER JOIN contract b ON a.contract_UUID = b.UUID
INNER JOIN geoPoint c ON b.customer_UUID = c.customerUUID
WHERE c.com_UUID = '$com' AND a.report_date >= Date('$dateafter')
AND c.city_UUID = '$cit' ORDER BY `report_date`";
,我需要做的是先幹掉通過日期過濾所有的結果,但你可以看到我得到的一切,然後做我的日期排序在檢查..
我內心加入所有這些 - 有沒有更好的方式來做到這一點?
我對每個日期都有一個報告 - 並且有兩年的數據 - 我想在2014年只有日期,所以你可以看到我有700多個日期對我來說很無用,但我必須經過他們都可以檢查其他字符串UUID以及...我能做些什麼來加速我的(工作 - 雖然執行緩慢)?
解釋信息的要求:
Generation Time: Feb 20, 2014 at 06:48 PM
Generated by: phpMyAdmin 3.3.10.4/MySQL 5.1.53-log
SQL query: EXPLAIN SELECT DISTINCT report_date,weekreportDate FROM contract_sales a INNER JOIN contract b ON a.contract_UUID = '1234' INNER JOIN geoPoint c ON b.customer_UUID = '1234' WHERE c.com_UUID = '1234' AND a.report_date >= Date('2014-01-01') AND c.city_UUID = '1234' ORDER BY `report_date`;
Rows: 3
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE a ref uuid_conlcs uuid_conlcs 110 const 1 Using where; Using temporary; Using filesort
1 SIMPLE b ref uuid_cust uuid_cust 110 const 1 Using where; Using index; Distinct
1 SIMPLE c ref uuid_gargp,uuid_citgp uuid_citgp 110 const 1 Using where; Distinct
謝謝您的詳細信息!它需要我花一些時間來消化你所說的內容,但是從最初的閱讀中我認爲我理解並且會給出這個答案!欣賞它! – morty346
@ morty346,抱歉後期編輯,但第二次查詢實際上會有不同的索引,因爲我修改了答案上下文。 – DRapp