Advertisement
Guest User

Untitled

a guest
May 12th, 2016
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- reformatted version of this post:
  2. -- http://codereview.stackexchange.com/questions/128225/large-mysql-query-takes-about-15-seconds-to-execute/128234#128225
  3. SELECT
  4.     usr.first,
  5.     usr.last,
  6.     ivn.id,
  7.     IFNULL(ivn.vendor, doc.unattached_vendor) AS vendor,
  8.     IFNULL(ivn.originalskunumber, doc.skunumber) AS skunumber,
  9.     doc.date_sent,
  10.     doc.document_type,
  11.     doc.document_id,
  12.     doc.description,
  13.     doc.qty,
  14.     doc.triage_notes,
  15.     doc.status,
  16.     doc.arrival_date,
  17.     doc.id AS document_row
  18. FROM documents AS doc
  19.     LEFT JOIN inventory AS ivn
  20.         ON (CASE
  21.             WHEN doc.document_type = 'Invoice'
  22.                 THEN ivn.skunumber = doc.skunumber
  23.             WHEN doc.document_type = 'Purchase Order'
  24.                 THEN ivn.originalskunumber = doc.skunumber
  25.         END)
  26.     INNER JOIN users AS usr
  27.         ON usr.uid = doc.customer_id
  28. WHERE doc.document_type <> 'Quote'
  29.     AND doc.header_item = '0'
  30.     AND doc.active_document = '1'
  31.     AND doc.active_item = '1'
  32.     AND (CASE
  33.         WHEN doc.document_type = 'Invoice' AND doc.skunumber IS NOT NULL
  34.             THEN (doc.document_id, LEFT(doc.skunumber, 3)) NOT IN (
  35.                 SELECT
  36.                     trailing_doc,
  37.                     LPAD(vendor_code, 3, '0') AS vendor_code
  38.                 FROM documents
  39.                 WHERE active_document = '1'
  40.                     AND active_item = '1'
  41.                     AND trailing_doc IS NOT NULL
  42.                     AND vendor_code IS NOT NULL
  43.             )
  44.         WHEN doc.document_type = 'Purchase Order'
  45.             THEN 1
  46.         ELSE 1
  47.     END)
  48.         AND (CASE
  49.             WHEN doc.document_type = 'Invoice'
  50.                 THEN doc.document_id IN (
  51.                     SELECT DISTINCT document_id
  52.                     FROM payments
  53.                     WHERE active_payment = '1'
  54.                         AND payment_amount > 0
  55.                 )
  56.             WHEN doc.document_type = 'Purchase Order'
  57.                 THEN 1
  58.         END)
  59.     AND (CASE
  60.         WHEN ivn.id IS NULL AND document_id IN (
  61.             SELECT DISTINCT trailing_doc
  62.             FROM documents
  63.             WHERE document_type = 'Purchase Order'
  64.                 AND active_document = '1'
  65.                 AND active_item = '1'
  66.                 AND trailing_doc > ''
  67.         )
  68.             THEN 0
  69.         ELSE 1
  70.     END)
  71. GROUP BY doc.document_id, ivn.originalskunumber
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement