国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

關于子查詢和連接的趣味小題目

來源:懂視網 責編:小采 時間:2020-11-09 13:03:02
文檔

關于子查詢和連接的趣味小題目

關于子查詢和連接的趣味小題目:今天有位同學出來一個趣味小題。 A: select title from simplified where id in (select id from analysis where word = something); B: select b.title from analysis a join simplified b on (a.id=
推薦度:
導讀關于子查詢和連接的趣味小題目:今天有位同學出來一個趣味小題。 A: select title from simplified where id in (select id from analysis where word = something); B: select b.title from analysis a join simplified b on (a.id=

上面的3段sql,在MYSQL中執行,哪一個效率最優,請講出原因

看到這個問題,我想起了之前作面試官的時候,也問過這里的問題。從另一個角度,我收集了大家面對這題目的時候一些思考,總結成下面的一個面試小故事。

這類題目真得蠻適合面試的時候考察對sql的掌握程度。

模擬一個場景,面試者:小白,面試官:小二,下面開始這段面試過程…..

小二:…. 我這里有個小問題,你看看(給出上面3段sql),balabala。。

小白:這2個表數據量如何了,join ,子查詢的優化根據數據量可能還有所不一樣吧。子查詢適合外結果集大,子查詢結果集小的情況,最好是能保證子查詢所返回的結果集盡量的小。

小二:假設2表,數據量差不多,都是萬條記錄左右。

小白:如果是這種的話,A應該會慢一點吧。 如果是在mysql上執行的話,A中子查詢語句會認為與外面的simolified表進行關聯比較有效率。這樣的話A其實就回被翻譯成:

select title from simplified where exists (select simplified.title from analysis where word= ‘something’ and id =simplified .id);

這種in子查詢的形式,在外部表(比如上面的simplified )數據量較大的時候效率是很差的.

小二: 恩,那么B和C之間有什么區別呢?

小白:B和C在我看來,應該是差不多的,其主要區別就是B采用了別名。但是我認為應該是沒多大影響的。

因為數據庫本身執行時,都會再把表名給換成自己的別名。但我影響中好像記得有一條數據庫的優化建議是盡量多表連接,最好是使用表的別名來引用列。

對了,有對id建索引吧。

小二: 2表id都是主鍵,這算是建了索引嗎?

小白: 是的,主鍵可以保證記錄的唯一和主鍵域非空,數據庫管理系統對于主鍵自動生成唯一索引,所以主鍵也是一個特殊的索引。

小二: 恩,一張表只能有一個主鍵,是不是就可以說只能有一個唯一的索引呢?

小白: 不對,主鍵一定是唯一性索引,唯一性索引并不一定就是主鍵,主鍵就是能夠唯一標識表中某一行的屬性或屬性組,一個表只能有一個主鍵,但可以有多個候選索引。

小二: 主鍵列和唯一索引列還有區別嗎?

小白:應該有,我知道的主鍵列不允許空值,而唯一性索引列允許空值。一個表中可以有多個唯一性索引,但只能有一個主鍵。

小二: 恩,回到上面的問題,你記得多表連接,最好使用表的別名來引用列,哪你有想過會是什么原因導致的呢?

小白:我估計應該是Mysql內部處理邏輯有關吧,有可能是使用了別名,就會再建一個臨時表放入內存,這樣后面的命中會更高。

小二: 差不多吧,mysql引擎自動生成temp表,造成緩存的效果。從這個sql,你大致應該能明白它的意圖了,你想想有沒有更優的寫法,可以試試看…

小白: 好的,我想想…..

小白:

select b.title from
(select id from analysis where word=’something’)a,
simplified b
where a.id=b.id;

如果這么去寫,應該是最快的。放棄子查詢和join。

小二: 恩,不錯…..

。。。

如果我在面試中碰到這樣的小白,絕對會留下深刻的影響。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

關于子查詢和連接的趣味小題目

關于子查詢和連接的趣味小題目:今天有位同學出來一個趣味小題。 A: select title from simplified where id in (select id from analysis where word = something); B: select b.title from analysis a join simplified b on (a.id=
推薦度:
標簽: 一個 查詢 連接
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 一级毛片一级毛片一级级毛片 | 亚洲欧洲高清有无 | 丰满老熟好大bbbxxx | 毛片视频网站 | 亚洲欧洲精品成人久久曰影片 | 国产精品视频专区 | 2020年国产高中毛片在线视频 | 精品视频在线观看视频免费视频 | 久久免费国产精品一区二区 | 97久久精品午夜一区二区 | 欧美在线观看日韩欧美在线观看 | 精品国产综合成人亚洲区 | 亚洲国产精品免费观看 | 日韩一区二区三区在线播放 | 亚洲第一页在线播放 | 国产精品国产三级国产 | 国产免费一级片 | 国产成人3p视频免费观看 | 中文在线视频 | 国产成a人片在线观看视频下载 | 日本特级淫片免费看 | 国产在线观看精品一区二区三区91 | 日韩欧美一区二区三区在线 | 又粗又硬又大又深又爽动态图 | 久久国内精品 | 久久亚洲精品国产精品婷婷 | 欧美成人精品一区二区三区 | 久久精品成人一区二区三区 | 一本色道久久88综合亚洲精品高清 | 热九九精品| 最新国产在线视频 | 国产一区二区久久精品 | 国产 日韩 欧美在线 | 91网红福利精品区一区二 | 国产小视频在线免费观看 | 久久久久久久岛国免费播放 | 国产精品一区二区久久不卡 | 国产成人一区二区三区在线播放 | 91在线观| 免费在线不卡视频 | 久久精品国产免费一区 |