EDIT FINAL : 수정 된 코드는 5.5에서 작동하지만 5.0에서는 약간 다른 행 집합을 얻습니다. ..5.5가 두 가지 쿼리를 사용하여 다른 결과를 반환하는 이유는 무엇입니까?
테이블 이름의 일부를 제거하는 나는 위의 쿼리를 수정 한
SELECT DISTINCT
sql_no_cache as job.id,
job.id as job_id,
job.job_status,
job.servee_name,
kase.plaintiff,
index_number,
lawfirm_filenumber,
DATE_FORMAT(job.datetime_received, '%m/%d/%Y') as date_received,
DATE_FORMAT(job.date_sent_to_court, '%m/%d/%Y') as date_sent_to_court,
DATE_FORMAT(kase.date_kase_filed, '%m/%d/%Y') as date_kase_filed,
TO_DAYS(NOW())-TO_DAYS(kase.date_kase_filed) as thedays,
DATE_FORMAT(kase.court_datetime, '%m/%d/%Y %h:%i %p') as court_date,
kase.court_room,
CONCAT(LUcourt.court_county," - ",LUcourt.court_type) as court_name,
DATE_FORMAT(job.datetime_served, '%m/%d/%Y') as datetime_served,
CONCAT(server.namefirst,' ', server.namelast) as server_name
FROM job
LEFT JOIN kase ON job.kase_id = kase.id
LEFT JOIN kasebilling ON kasebilling.kase_id = kase.id
LEFT JOIN server ON job.server_id = server.id
LEFT JOIN client ON client.id = kase.client_id
LEFT JOIN LUcourt ON LUcourt.id = kase.court_id
WHERE job.subscriber_id = 1
ORDER BY job_id + 0
LIMIT 0,500;
</pre>
i modified the query but it wont run ...
SELECT DISTINCT sql_no_cache job.id, job.id as job_id, job.job_status, job.servee_name, kase.plaintiff, index_number, lawfirm_filenumber, DATE_FORMAT(job.datetime_received, '%m/%d/%Y') as date_received, DATE_FORMAT(job.date_sent_to_court, '%m/%d/%Y') as date_sent_to_court, DATE_FORMAT(kase.date_kase_filed, '%m/%d/%Y') as date_kase_filed, TO_DAYS(NOW())-TO_DAYS(kase.date_kase_filed) as thedays, DATE_FORMAT(kase.court_datetime, '%m/%d/%Y %h:%i %p') as court_date, kase.court_room, CONCAT(LUcourt.court_county," - ",LUcourt.court_type) as court_name, DATE_FORMAT(job.datetime_served, '%m/%d/%Y') as datetime_served, concat(server.namefirst,' ', server.namelast) as server_name FROM job
LEFT JOIN kase ON job.kase_id = kase.id
LEFT JOIN kasebilling ON kasebilling.kase_id = kase.id
LEFT JOIN server ON job.server_id = server.id
left join client on client.id=kase.client_id
left join LUcourt on LUcourt.id=kase.court_id WHERE job.subscriber_id = 1 and job_id in (select distinct job.id from job where job.subscriber_id = '1' order by id+0) LIMIT 0,500
</pre>
다음 쿼리 ... 내가 요청에 의한 순서가 매우 빠르게 진행 제거하는 경우에는 무슨 일이되는 것은. .. 나는 그것의 순서가 한계 500뿐만 아니라 모든 행에 의해서라고 생각합니다 ... 어떻게하면이 명령을 더 빨리 할 수 있습니까? 어떤 도움을
PS .... 감사 감사하겠습니다 : 자사는
설명 ... order_by에 filesort를 사용하여 : 내가 쿼리를 수정하지만 늘 실행+----+-------------+-------------+--------+--------------------------------------------------------------------------------------+---------------------------------------------+---------+-----------------------+--------+----------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------------+--------+--------------------------------------------------------------------------------------+---------------------------------------------+---------+-----------------------+--------+----------------------------------------------+ | 1 | SIMPLE | job | ref | subscriber_id,subscriber_id-job_loc-client_loc-server_loc,sub_id_idx_servee_name_idx | subscriber_id-job_loc-client_loc-server_loc | 4 | const | 362381 | Using where; Using temporary; Using filesort | | 1 | SIMPLE | kase | eq_ref | PRIMARY | PRIMARY | 4 | pserve.job.kase_id | 1 | | | 1 | SIMPLE | kasebilling | ref | kase_id | kase_id | 4 | pserve.kase.id | 2 | Using index | | 1 | SIMPLE | server | eq_ref | PRIMARY | PRIMARY | 4 | pserve.job.server_id | 1 | | | 1 | SIMPLE | client | eq_ref | PRIMARY | PRIMARY | 4 | pserve.kase.client_id | 1 | Using index | | 1 | SIMPLE | LUcourt | eq_ref | PRIMARY | PRIMARY | 4 | pserve.kase.court_id | 1 | | +----+-------------+-------------+--------+--------------------------------------------------------------------------------------+---------------------------------------------+---------+-----------------------+--------+----------------------------------------------+
...
SELECT DISTINCT sql_no_cache job.id, job.id as job_id, job.job_status, job.servee_name, kase.plaintiff, index_number, lawfirm_filenumber, DATE_FORMAT(job.datetime_received, '%m/%d/%Y') as date_received, DATE_FORMAT(job.date_sent_to_court, '%m/%d/%Y') as date_sent_to_court, DATE_FORMAT(kase.date_kase_filed, '%m/%d/%Y') as date_kase_filed, TO_DAYS(NOW())-TO_DAYS(kase.date_kase_filed) as thedays, DATE_FORMAT(kase.court_datetime, '%m/%d/%Y %h:%i %p') as court_date, kase.court_room, CONCAT(LUcourt.court_county," - ",LUcourt.court_type) as court_name, DATE_FORMAT(job.datetime_served, '%m/%d/%Y') as datetime_served, concat(server.namefirst,' ', server.namelast) as server_name FROM job
LEFT JOIN kase ON job.kase_id = kase.id
LEFT JOIN kasebilling ON kasebilling.kase_id = kase.id
LEFT JOIN server ON job.server_id = server.id
left join client on client.id=kase.client_id
left join LUcourt on LUcourt.id=kase.court_id WHERE job.subscriber_id = 1 and job_id in (select distinct job.id from job where job.subscriber_id = '1' order by id+0) LIMIT 0,500
가 * 나는 다만하여 순서를 생각을 500을 제한하지만 모든 행을 * - 어떻게 주문 하시겠습니까? – RedFilter
RedFilter가 말한 것에 덧붙여, 모든 행을 주문하지 않으면 어떤 행이 처음 500인지 알 수 없습니다. 쿼리 속도를 높이려면'job_id'를 인덱싱 했습니까? – Palladium
한계가 작동하려면 mysql이 쿼리가 반환 할 모든 행을 가져와야하며, ** THEN ** 지정된 처음 500 행을 가져야합니다. –