Sto scrivendo una query per selezionare divieti giocatore da un'altra tabella, ma in primo luogo il suo prendere molto lentamente circa 7-14 secondi e in secondo luogo le sue righe non valide di ritorno.Query MySQL che restituisce righe non valide e molto lenta
La prima domanda è la seguente:
SELECT *
FROM sourcebans.sb_bans
WHERE removetype IS NULL
AND removedon IS NULL
AND reason NOT LIKE '%[FragSleuth] Duplicate account%'
AND ip IN(SELECT DISTINCT ip
FROM fragsleuth.history
WHERE trackingid = "ad000c3803b48190aabf382e01b957c9")
OR authid IN(SELECT DISTINCT steamid
FROM fragsleuth.history
WHERE trackingid = "ad000c3803b48190aabf382e01b957c9")
La seconda query è la seguente
SELECT * FROM `history` WHERE trackingid = "ad000c3803b48190aabf382e01b957c9"
E un paio di screenshot per mostrare cosa intendo: First QuerySecond Query
In screenshot 1 puoi vedere che restituisce una riga in cui rimossi e removetype non sono nulli quando ho chiesto al eseguire una query per restituire solo le righe con NULL.
Ho anche paura che all'interno della tabella della cronologia ci saranno voci duplicate per le colonne steamid e ip che potrebbero rallentare la query, esiste un modo per fare in modo che la query selezioni solo le righe con un IP o steamid univoco basato su il trackingid?
Qualsiasi aiuto sarebbe molto apprezzato.
Grazie
Edit: Sono sopraffatto con l'aiuto, Grazie a @maraca, @Skorpioh e @ Adamo Silenko, il tempo di query è ora meno di un secondo!
E probabilmente è necessario un '(' prima 'ip' e a') 'alla fine. – maraca