Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- reformatted version of this post:
- -- http://codereview.stackexchange.com/questions/128225/large-mysql-query-takes-about-15-seconds-to-execute/128234#128225
- SELECT
- usr.first,
- usr.last,
- ivn.id,
- IFNULL(ivn.vendor, doc.unattached_vendor) AS vendor,
- IFNULL(ivn.originalskunumber, doc.skunumber) AS skunumber,
- doc.date_sent,
- doc.document_type,
- doc.document_id,
- doc.description,
- doc.qty,
- doc.triage_notes,
- doc.status,
- doc.arrival_date,
- doc.id AS document_row
- FROM documents AS doc
- LEFT JOIN inventory AS ivn
- ON (CASE
- WHEN doc.document_type = 'Invoice'
- THEN ivn.skunumber = doc.skunumber
- WHEN doc.document_type = 'Purchase Order'
- THEN ivn.originalskunumber = doc.skunumber
- END)
- INNER JOIN users AS usr
- ON usr.uid = doc.customer_id
- WHERE doc.document_type <> 'Quote'
- AND doc.header_item = '0'
- AND doc.active_document = '1'
- AND doc.active_item = '1'
- AND (CASE
- WHEN doc.document_type = 'Invoice' AND doc.skunumber IS NOT NULL
- THEN (doc.document_id, LEFT(doc.skunumber, 3)) NOT IN (
- SELECT
- trailing_doc,
- LPAD(vendor_code, 3, '0') AS vendor_code
- FROM documents
- WHERE active_document = '1'
- AND active_item = '1'
- AND trailing_doc IS NOT NULL
- AND vendor_code IS NOT NULL
- )
- WHEN doc.document_type = 'Purchase Order'
- THEN 1
- ELSE 1
- END)
- AND (CASE
- WHEN doc.document_type = 'Invoice'
- THEN doc.document_id IN (
- SELECT DISTINCT document_id
- FROM payments
- WHERE active_payment = '1'
- AND payment_amount > 0
- )
- WHEN doc.document_type = 'Purchase Order'
- THEN 1
- END)
- AND (CASE
- WHEN ivn.id IS NULL AND document_id IN (
- SELECT DISTINCT trailing_doc
- FROM documents
- WHERE document_type = 'Purchase Order'
- AND active_document = '1'
- AND active_item = '1'
- AND trailing_doc > ''
- )
- THEN 0
- ELSE 1
- END)
- GROUP BY doc.document_id, ivn.originalskunumber
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement