teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

質問内容に関係ない記述を削除。

2018/12/14 03:06

投稿

mks
mks

スコア80

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  伝票番号は他社システムより振り出されるものですが、一定範囲の連番がサイクリックに振り出されるようで、そのため重複の条件として、伝票日付が前後3か月以内の受注のみを対象とすることになっています。
4
4
 
5
- 伝票番号は委託しない場合など付与されないケースも、また、1つの受注に2件以上付与されるケースもありますが、最大2件管理することになっています。
5
+ 伝票番号は受注によって付与されないケースも、また、1つの受注に2件以上付与されるケースもありますが、最大2件管理することになっています。
6
6
 
7
7
  あれこれ検索のSQLやインデックスをこね回してみても、受注データが3000件弱で4秒ほどかかってしまっており苦戦しております。
8
8
  検索のSQLやインデックスの貼り方、あるいはテーブル構造の見直しでも何らかヒントが頂けたらと思っています。

1

SQLの誤りを修正しました。

2018/12/14 03:06

投稿

mks
mks

スコア80

title CHANGED
File without changes
body CHANGED
@@ -78,8 +78,8 @@
78
78
  )
79
79
  )
80
80
  OR
81
- orders.voucher_no2 IS NOT NULL AND (
81
+ orders.voucher_no2 IS NULL OR (
82
- orders.voucher_no2 IN (
82
+ orders.voucher_no2 NOT IN (
83
83
  SELECT duplicate3.voucher_no1
84
84
  FROM orders duplicate3
85
85
  WHERE duplicate3.customer_id = 2
@@ -89,7 +89,7 @@
89
89
  AND duplicate3.voucher_date BETWEEN orders.voucher_date - INTERVAL 3 MONTH AND orders.voucher_date + INTERVAL 3 MONTH
90
90
  )
91
91
  OR
92
- orders.voucher_no2 IN (
92
+ orders.voucher_no2 NOT IN (
93
93
  SELECT duplicate4.voucher_no2
94
94
  FROM orders duplicate4
95
95
  WHERE duplicate4.customer_id = 2