我有一个查询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