2016-06-13 93 views
1

這裏是Python代碼的示例:的MySQL,fetchone和LIMIT

query = "SELECT * FROM users WHERE id = 17" 
cursor.execute(query) 
row = cursor.fetchone() 

在這個例子中,該查詢是指至多單個行返回;但有時我想用相同的代碼來從多行結果單行,例如:

query = "SELECT * FROM users WHERE name LIKE 'foo%'" 
cursor.execute(query) 
row = cursor.fetchone() 

在性能方面,是它更好地明確寫入LIMIT 1

+1

是的,因爲你只需要1個爲什麼取更多? –

+0

@ juergen d - LIMIT在選擇後工作 –

回答

0

不,LIMIT子句在結果集上的SELECT之後執行。如果你有很多行,id = 17,如果你不使用LIMIT,你必須從服務器向客戶端傳輸更多的信息。

+0

_Not true_;或者至少並非總是如此。在第二個例子中,假設'INDEX(name)',表中恰好有1個探針;它會得到_one_ foo行(或者在那裏找不到)。如果存在「GROUP BY」和/或「ORDER BY」,則在應用「LIMIT」之前,「SELECT」將不得不收集整個結果集。 –

+0

問題中的組/順序在哪裏? –

+0

由於沒有'GROUP' /'ORDER','LIMIT' _will_將短路'SELECT'。 (可能還有其他的例外情況。)當我讀到它時,你的回答說'LIMIT'永遠不會使'SELECT'短路。 –