怎樣優化一段SQL?

時間 2021-06-03 13:51:17

1樓:周偉毅

不知道樓主資料庫是哪個。貌似不是oracle, oracle應該是這樣:

第乙個: select from_city, target_city,COUNT(1)

FROM train

WHERE passenger_name = '張三'

GROUP BY from_city, target_city第二個:select * from (

select * from target WHERE passenger_name = '張三' order by train_date desc

) where rownum = 1

2樓:霜楓

先說一下答案主的sql是錯的,原因是:樓主的sql的意思是只要存在找到目的地等於這個起始地的記錄,就認為是乙個往返。事實上乙個往返得滿足:

1.出發的時間得小於返回的時間。2.

乙個出發記錄只能匹配乙個返回記錄。3.乙個返回記錄只能匹配乙個出發記錄。。

然後我認為的正確的sql如下:

SELECT

COUNT(*)

FROM

( SELECT

*FROMSELECT

a.id AS id,

a.from_city AS startcity,a.target_city AS targetcity,a.

passenger_name AS pName,a.train_date AS startTime,b.train_date AS backTime,b.

id AS bid

FROM

train AS a

INNER JOIN train AS b ON a.from_city = b.target_city

AND a.passenger_name = b.passenger_name

AND a.train_date < b.train_dateGROUP BY

a.id

) tb

WHERE

tb.pName = '張三'

AND tb.startcity = '長沙'

GROUP BY

bid) tb2

如何優化一條 order by 的 SQL 語句?

cl jin 我不是個高手,但自認為看懂了這個問題,首先我來舉例說明一下為什麼會出現filesort。首先得了解索引在硬碟中的儲存狀態,復合索引的儲存是按照排列組合的順序排好的,city word user count 這種索引,他儲存的順序你可以抽象的理解為 acity,aword,auser c...

怎樣去挽回一段感情?

Anny 你好相處兩年,對方提出分手,原因是你不夠成熟,幼稚 這兩年你們經歷一些事情,各自都發生了改變,對自己的要求,對伴侶的需求同樣也會發生改變 女生說男朋友幼稚,一般指的是男朋友情商比較低,缺乏責任心,看事情比較片面等 但每個人都有幼稚的方面,女朋友因為這個原因和你提出分手,是因為你 幼稚 的方...

怎樣再開始一段感情?

肩頭軟貓 結婚不是一段感情的結束,而是重新開始審視你們的感情。分開了不可怕,離婚了也不要悲觀。你心裡清楚,時間可以抹去你曾經掉下的淚水。你以為你永遠不會忘記的人,可是在很多年以後,你甚至已經是記不起為什麼當初是那麼的恨他。 如果你需要思考怎樣才能再開始一段感情,才能開始一段感情,那麼你就不應該開始一...