2016-08-16 7 views
0

私はデータベーステーブルをクエリするためにMySQLを使用しています。データを失うことなくSQLクエリを最適化するには?

私は最終的に、私のデータベースから私が望むものを返すことがわかりました。 (私はSQLの専門家ではありません)

しかし、上記のクエリは、phpMyAdminで結果を表示するのに時間がかかります。

Showing rows 0 - 24 (32 total, Query took 7.1488 sec) 

このクエリは7秒より速くなるように最適化できますか?ここで

は私SQLFiddleです:

http://sqlfiddle.com/#!9/d3b5a2

詳細な説明:

表:各チケットのswcustomfieldvalues

customfieldvalueid 
customfieldid 
typeid <— This field is not unique in this table 
fieldvalue 
isserialized 
isencrypted 
dateline 
uniquehash 
lastupdated 

、私はswcustomfieldvalues 全9つのカスタムフィールドを持っています各9つのカスタムフィールドチケットにはtypeid(= ticketidswtickesの表)があ​​ります。私は9行を取得しますtypeid=98765

については、この表を照会する場合は、fieldvalueは、ユーザーの携帯電話の番号

を保持している

7 = customfieldid場合

customfieldid = 6場合は、fieldvalueは、ユーザーのフルネームを保持していますすべてが同じタイプIDを持ち、fieldvaluecustomfieldidなどの異なる値を持っています。

私はこのresからしたいcustomfieldid=6だけcustomfieldid=7

fieldvalue=1234567場合ULT(9行)fieldvalue値は、私はすでに私のクエリでこの値1234567を持っているので、それが結果にかリストされている場合、私は気にしないでください。

詳細な説明:

enter image description here

現在のすべての答えが正常に「swtickets」テーブルからクエリPLUS他のチケット脱線で提供される携帯電話番号を持っている各チケットの行のこれらのセットをフェッチします。我々はこれまで何をしている

: 検索(クエリ)はcustomfieldid = 7とフィールド値= 0555.

すべてが正常であるときの条件で行われます。しかし、私はフィールド値を結果に表示したくありません(私は気にしません)私は行の結果に名前を表示します。

私は場合にのみcustomfieldid=6持つ行のためのfieldvalueたい:

customfieldid=7

行は、2つのクエリ(鉱山の答えに関する)のfieldvalue=0555

結果を持っているが

enter image description here

答えて

1

このようなものを使用すると簡単にすることができます

SELECT 
swtickets.ticketid, 
swtickets.ticketstatustitle, 
swtickets.departmenttitle, 
swtickets.subject, 
swtickets.dateline, 
swtickets.ownerstaffname, 
swtickets.lastreplier, 
swcustomfieldvalues.fieldvalue, 
swcustomfieldvalues.customfieldid 
FROM swtickets 
LEFT JOIN swcustomfieldvalues 
ON 
swcustomfieldvalues.typeid = swtickets.ticketid 
AND 
swcustomfieldvalues.fieldvalue = 12345678 
AND 
swcustomfieldvalues.customfieldid = 123 
+0

をお試しください: 'テーブル/エイリアスユニークではない:それはのために返すことを除いて、私は私の答えを編集した「swcustomfieldvalues」' – malhobayyeb

+0

[OK]をあなたは今 –

+0

ほぼ正しいことを確認することができます私が望まない 'swcustomfieldvalues.customfieldid'の' swcustomfieldvalues.fieldvalue'は '123'と同じではない – malhobayyeb

0

私はエラーになっています。この

select swtickets.ticketid, swtickets.ticketstatustitle, swtickets.departmenttitle, swtickets.subject, swtickets.dateline, swtickets.ownerstaffname, swtickets.lastreplier, swcustomfieldvalues.fieldvalue, swcustomfieldvalues.customfieldid 
     from swtickets 
     join swcustomfieldvalues ON (swtickets.ticketid = swcustomfieldvalues.typeid) 
     where swcustomfieldvalues.fieldvalue = 12345678 and swcustomfieldvalues.customfieldid=123 
+0

他の回答と同じ結果です。 – malhobayyeb

+0

すべての答えは正しい行数を取り出しますが、 'swcustomfieldvalues'のデータは私が望むものではありません。 – malhobayyeb

+0

'customfieldid'が6のカラム' fieldvalue'の値をテーブルから取得します。しかし、クエリでは、 'customfieldid'が7のとき' fieldvalue'と一致させたい – malhobayyeb