2009-07-22 7 views
1

je le code ci-dessous SQLiteEssayer d'accélérer une UNION SQLite QUERY

SELECT x.t, 
CASE WHEN S.Status='A' AND M.Nomorebets=0 THEN S.PriceText ELSE '-' END AS Show_Price 
FROM sb_Market M 
LEFT OUTER JOIN 
(select 2010 t union 
select 2020 t union 
select 2030 t union 
select 2040 t union 
select 2050 t union 
select 2060 t union 
select 2070 t 
) as x 
LEFT OUTER JOIN sb_Selection S ON 
S.MeetingId=M.MeetingId AND 
S.EventId=M.EventId AND 
S.MarketId=M.MarketId AND 
x.t=S.team 
WHERE M.meetingid=8051 AND M.eventid=3 AND M.Name='Correct Score' 

Avec les restrictions de l'interface actuelle, je dois utiliser le code ci-dessus pour faire en sorte que si l'on sélection manque, qu'un « - 'apparaît.

Certains aliments serait quelque chose comme ce qui suit

 
SelectionId Name Team Status PriceText 
=================================== 
1 Barney 2010 A 10 
2 Jim 2020 A 5 
3 Matt 2030 A 6 
4 John 2040 A 8 
5 Paul 2050 A 15/2 
6 Frank 2060 S 10/11 
7 Tom 2070 A 15 

utilise le code SQL ci-dessus le plus rapide & efficace ??

S'il vous plaît aviser de quoi que ce soit qui pourrait aider. Les messages avec mises à jour seraient préférables.

+0

Peut-être pourriez-vous ajouter des instructions de création de table et des exemples de données? – tuinstoel

+0

tuinstoel - pouvez-vous élaborer sur ce ?? données de l'échantillon est SelectionId Name Statut de l'équipe PriceText -------------------------------------- -------- 1 Barney 2010 A 2 2 Jim 2020 A 5 3 Matt 2030 A 6 4 John 2040 A 8 5 Paul 2050 A 15/2 6 Frank 2060 S 10/11 7 Tom 2070 A 15 –

Répondre

0

Certaines choses que vous pouvez faire:

  1. Assurez-vous qu'il existe un index sur sb_Selection (MeetingID, EventId, MarketId)
  2. Assurez-vous qu'il existe un index sur sb_Market (MeetingID, EventId, MarketId)
  3. Envisagez de couvrir les index si vous avez besoin de meilleures performances (par exemple, vous pourriez couvrir S.team, S.Status, S.PriceText)