第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

什么更快,MySQL中的SELECT DISTINCT或GROUP BY?

什么更快,MySQL中的SELECT DISTINCT或GROUP BY?

皈依舞 2019-08-09 17:44:19
什么更快,MySQL中的SELECT DISTINCT或GROUP BY?如果我有一張桌子CREATE TABLE users (   id int(10) unsigned NOT NULL auto_increment,   name varchar(255) NOT NULL,   profession varchar(255) NOT NULL,   employer varchar(255) NOT NULL,   PRIMARY KEY  (id))我希望獲得所有獨(dú)特的profession字段值,更快(或推薦):SELECT DISTINCT u.profession FROM users u要么SELECT u.profession FROM users u GROUP BY u.profession?
查看完整描述

3 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

它們本質(zhì)上是相互對(duì)應(yīng)的(實(shí)際上這是一些數(shù)據(jù)庫(kù)DISTINCT在引擎蓋下實(shí)現(xiàn)的方式)。

如果其中一個(gè)更快,那就是DISTINCT。這是因?yàn)椋m然兩者是相同的,但查詢(xún)優(yōu)化器必須抓住這樣一個(gè)事實(shí):你GROUP BY沒(méi)有利用任何組成員,只有他們的密鑰。DISTINCT使這個(gè)顯而易見(jiàn),所以你可以使用稍微笨拙的優(yōu)化器。

如有疑問(wèn),請(qǐng)測(cè)試!


查看完整回答
反對(duì) 回復(fù) 2019-08-09
?
侃侃無(wú)極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

如果您有索引profession,則這兩個(gè)是同義詞。

如果你不這樣做,那就用吧DISTINCT

GROUP BYMySQL各種結(jié)果。你甚至可以這樣做:

SELECT u.profession FROM users u GROUP BY u.profession DESC

讓你的職業(yè)按DESC順序排序。

DISTINCT創(chuàng)建一個(gè)臨時(shí)表并使用它來(lái)存儲(chǔ)重復(fù)項(xiàng)。GROUP BY做同樣的事情,但事后對(duì)不同的結(jié)果進(jìn)行排序。

所以

SELECT DISTINCT u.profession FROM users u

如果您沒(méi)有索引,則更快profession。


查看完整回答
反對(duì) 回復(fù) 2019-08-09
?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

上面的所有答案都是正確的,對(duì)于單列上的DISTINCT與單列上的GROUP BY的情況。每個(gè)數(shù)據(jù)庫(kù)引擎都有自己的實(shí)現(xiàn)和優(yōu)化,如果你關(guān)心的差別很?。ㄔ诖蠖鄶?shù)情況下),那么你必須針對(duì)特定的服務(wù)器和特定版本進(jìn)行測(cè)試!隨著實(shí)施可能會(huì)改變......

但是,如果您在查詢(xún)中選擇了多個(gè)列,那么DISTINCT本質(zhì)上是不同的!因?yàn)樵谶@種情況下,它將比較所有行的所有列,而不是僅比較一列。

所以如果你有類(lèi)似的東西:

// This will NOT return unique by [id], but unique by (id,name)SELECT DISTINCT id, name FROM some_query_with_joins// This will select unique by [id].SELECT id, name FROM some_query_with_joins GROUP BY id

認(rèn)為DISTINCT關(guān)鍵字按行指定的第一列來(lái)區(qū)分行是一個(gè)常見(jiàn)的錯(cuò)誤,但DISTINCT是這種方式的通用關(guān)鍵字。

因此,人們必須小心,不要將上述答案視為所有情況的正確答案......您可能會(huì)感到困惑并得到錯(cuò)誤的結(jié)果,而您想要的只是優(yōu)化!


查看完整回答
反對(duì) 回復(fù) 2019-08-09
  • 3 回答
  • 0 關(guān)注
  • 890 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)