国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引

這篇具有很好參考價值的文章主要介紹了mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前言

接上章 我們 對一個簡單的選課功能進(jìn)行 設(shè)計分析

實(shí)際上在工作中 拿到一個需求,也是這樣的一個分析過程

一個份 需求文檔+原型 出來,只要是你負(fù)責(zé)這個模塊,就需要你自己建表建庫,設(shè)計接口文檔,也許現(xiàn)在有的公司會有一個帶你的大哥會幫你建表建庫【甚至接口文檔都幫你寫好了,你只需要按照接口進(jìn)行開發(fā)】,那也只是初步的【實(shí)習(xí)生】,到后面還是得靠自己

再有的公司是需要開發(fā)人員寫概要設(shè)計(里面就包含數(shù)據(jù)庫設(shè)計)的 , 但總的來說是八九不離十,分析步驟還是一樣的

案例

我們一步一步來,先造一些數(shù)據(jù)

1. teacher_info

--  Auto-generated SQL script #202211150937
INSERT INTO elective.teacher_info (id,code,name,sex,professional,create_id,create_time,update_id,update_time)
  VALUES (2,'LS20221115001','李四',0,'副教授',1,'2022-11-15 10:11:25',1,'2022-11-15 10:11:25');

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫

2. student_info

INSERT INTO elective.student_info (id,code,name,sex,class_name,create_id,create_time,update_id,update_time,age)
  VALUES (2,'XS20221115001','學(xué)生2',0,'物聯(lián)網(wǎng)工程二班',1,'2022-11-15 10:11:25',1,'2022-11-15 10:11:25',23);

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫

3.course_info

比如

老師張三 有兩門課 一門微積分 一門 java基礎(chǔ)

老師李四 有一門課 SpringCloud概論

INSERT INTO elective.course_info (id,teacher_id,course_name,course_code,course_type,course_score,create_id,create_time,update_id,update_time)
VALUES (1,1,‘微積分’,‘WJF2022’,‘?dāng)?shù)學(xué)’,4,1,‘2022-11-15 10:11:25’,1,‘2022-11-15 10:11:25’);

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫

4 .student_course_info

選課表

學(xué)生1 選了張三 老師的 微積分 + 李四老師的 SpringCloud概論

學(xué)生2 選了張三 老師的 java基礎(chǔ)

--  Auto-generated SQL script #202211150955
INSERT INTO elective.student_course_info (id,stu_id,cou_id,score,create_id,create_time,update_id,update_time)
  VALUES (2,1,3,95,1,'2022-11-15 10:11:25',1,'2022-11-15 10:11:25');

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫

5. 模擬查詢

1. 列出學(xué)生1選擇的課程詳細(xì)信息(包括學(xué)生名字,課程名稱,授課老師,分?jǐn)?shù))

select
  si.name as stuName,
  ci.course_name as courseName,
  ti.name  as teacherName,
  sci.score 
from
  student_course_info as sci  
left join student_info si on sci.stu_id = si.id
left join course_info ci on ci .id  = sci.cou_id
left join teacher_info ti on ti.id  = ci.teacher_id 
where sci.stu_id = 1

as:取別名 可省略

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫

2. 查詢張三老師的所有課程

select 
  ci.course_name as teacherName,
  ti.name 
   from   course_info ci  
   left join teacher_info ti on ci.teacher_id  = ti.id 
   where ci.teacher_id =1

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
3. 查詢所有學(xué)生選修的總學(xué)分,并且從高到低排序

desc:降序

asc: 升序

select
  si.name,
  sum(ci.course_score) as sumScore
from
  student_course_info sci
left join student_info si on sci.stu_id = si.id
left join course_info ci on ci.id = sci.cou_id
group by
  sci.stu_id
order by
  sumScore desc

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
6. 索引Type類型

我們可以使用explain來 查看索引類型

就比如 2. 查詢張三老師的所有課程 這個sql 語句
mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
type 列有 all 跟 const 兩個類型,possible keys 就是我們使用到的索引,可以看到 類型為 all 的 索引為 null ,const 就是主鍵

這邊有個 索引類型的級別:

system > const > eq_ref > ref > range > index > all

越左邊 查詢效率越快 ,all效率最低

沒有索引的就是all,需要進(jìn)行優(yōu)化

這時候我們就需要給 course_info 加上索引了

where 條件后面的 teacher_id 需要加上索引

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
記得 Ctrl+S 保存

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
再來查詢看看

mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引,mysql,mysql,數(shù)據(jù)庫
可以看到級別變了,變成了ref ,可能現(xiàn)在數(shù)據(jù)量少沒看出效率變化,只要數(shù)據(jù)量一多,就可以明顯的感受到效率的提升不是一星半點(diǎn)文章來源地址http://www.zghlxwxcb.cn/news/detail-542945.html

到了這里,關(guān)于mysql —案例復(fù)雜查詢+索引使用+DBeaver中創(chuàng)建索引的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL索引:讓你的數(shù)據(jù)庫查詢快到起飛!

    MySQL索引:讓你的數(shù)據(jù)庫查詢快到起飛!

    ??世界上最美好的東西之一,就是你每天都有機(jī)會開始全新的一天。?? ??作者:不能再留遺憾了?? ??專欄:MySQL學(xué)習(xí)?? ??本文章主要內(nèi)容:詳細(xì)介紹如何查看、創(chuàng)建和刪除MySQL索引,以及MySQL索引的底層原理:B+樹。?? 各位朋友們,大家好!前面我們已經(jīng)介紹了MySQL的庫

    2024年02月09日
    瀏覽(18)
  • 【MySQL 數(shù)據(jù)庫】6、一篇文章學(xué)習(xí)【索引知識】,提高大數(shù)據(jù)量的查詢效率【文末送書】

    【MySQL 數(shù)據(jù)庫】6、一篇文章學(xué)習(xí)【索引知識】,提高大數(shù)據(jù)量的查詢效率【文末送書】

    索引(index) 是幫助 MySQL 高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)(有序) 在數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)還維護(hù)著滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式引用(指向)數(shù)據(jù), 這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)上實(shí)現(xiàn)高級查找算法,這種數(shù)據(jù)結(jié)構(gòu)就是 索引 。 MySQL的索引是在存儲引擎

    2024年02月08日
    瀏覽(23)
  • 【Mysql】X-DOC:Mysql數(shù)據(jù)庫大量數(shù)據(jù)查詢加速(定時JOB和存儲過程應(yīng)用案例)

    【Mysql】X-DOC:Mysql數(shù)據(jù)庫大量數(shù)據(jù)查詢加速(定時JOB和存儲過程應(yīng)用案例)

    在某中臺系統(tǒng)中,設(shè)計了大量的基礎(chǔ)數(shù)據(jù)(維度數(shù)據(jù)、維度映射關(guān)系等)來支撐業(yè)務(wù)功能,業(yè)務(wù)表中存在大量的維度外鍵關(guān)聯(lián)字段,其優(yōu)點(diǎn)是可以實(shí)現(xiàn)前端的選擇錄入,數(shù)據(jù)校驗(yàn),確保錄入數(shù)據(jù)的準(zhǔn)確性;缺點(diǎn)是在做業(yè)務(wù)報表時,需要做大量的維度關(guān)聯(lián)(join)操作。 受限于

    2024年02月12日
    瀏覽(23)
  • mysql 負(fù)向條件查詢不能使用索引

    負(fù)向條件查詢不能使用索引,可以優(yōu)化為in查詢。 負(fù)向條件有:!=、、not in、not exists、not like等。 優(yōu)化策略A:字段選擇性 1、選擇性較低索引 可能帶來的性能問題 2、索引選擇性=索引列唯一值/表記錄數(shù);(可執(zhí)行show index from tableName命令看字段的Cardinality(散列程度)) 3、選

    2024年01月24日
    瀏覽(16)
  • DBeaver連接mysql、oracle數(shù)據(jù)庫

    DBeaver連接mysql、oracle數(shù)據(jù)庫

    1) 下載DBeaver?https://dbeaver.io/download/,并安裝 2) 新建數(shù)據(jù)庫連接 ?? 3)選擇mysql驅(qū)動程序 ?4)填寫連接設(shè)置內(nèi)容 5)點(diǎn)擊 “編輯驅(qū)動設(shè)置”,并填寫相關(guān)信息 ?6)選擇本地自己下載的驅(qū)動庫jar包 (也可以點(diǎn)擊下載驅(qū)動) ?7)完成后,點(diǎn)擊測試連接,可以查看是否連接成功

    2024年02月05日
    瀏覽(38)
  • 圖數(shù)據(jù)庫Neo4j——SpringBoot使用Neo4j & 簡單增刪改查 & 復(fù)雜查詢初步

    圖數(shù)據(jù)庫Neo4j——SpringBoot使用Neo4j & 簡單增刪改查 & 復(fù)雜查詢初步

    圖形數(shù)據(jù)庫是專門用于存儲圖形數(shù)據(jù)的數(shù)據(jù)庫,它使用圖形模型來存儲數(shù)據(jù),并且支持復(fù)雜的圖形查詢。常見的圖形數(shù)據(jù)庫有Neo4j、OrientDB等。 Neo4j是用Java實(shí)現(xiàn)的開源NoSQL圖數(shù)據(jù)庫,本篇博客介紹如何在SpringBoot中使用Neo4j圖數(shù)據(jù)庫,如何進(jìn)行簡單的增刪改查,以及如何進(jìn)行復(fù)雜

    2024年02月06日
    瀏覽(34)
  • Java操作elasticSearch復(fù)雜查詢以及解析數(shù)據(jù)以及索引保存數(shù)據(jù)

    Java操作elasticSearch復(fù)雜查詢以及解析數(shù)據(jù)以及索引保存數(shù)據(jù)

    說明:基于銀行測試庫的操作 es的銀行測試庫,看一個Kibana操作 然后用java檢索解析這個數(shù)據(jù) 聚合搜索 address 中包含 mill 的所有人的年齡分布以及平均薪資 以下是分解思路實(shí)現(xiàn)步驟: #聚合搜索 address 中包含 mill 的所有人的年齡分布以及平均年齡 GET bank/_search { “query”:{ “

    2024年02月10日
    瀏覽(27)
  • 【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇

    【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇

    ??專欄【MySQL】 ??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。 ??音樂分享【The Right Path】 ??歡迎并且感謝大家指出小吉的問題 ??沒有創(chuàng)建索引時,執(zhí)行SQL語句,查看SQL的耗時 ?? 創(chuàng)建索引后 ,執(zhí)行SQL語句,查看SQL的耗時 比較發(fā)現(xiàn),時間減少了 ??細(xì)節(jié) 創(chuàng)建索引 相

    2024年02月16日
    瀏覽(42)
  • MySQL數(shù)據(jù)庫進(jìn)階第二篇(索引,SQL性能分析,使用規(guī)則)

    MySQL數(shù)據(jù)庫進(jìn)階第二篇(索引,SQL性能分析,使用規(guī)則)

    本篇博客深入詳細(xì)地介紹了數(shù)據(jù)庫索引的概念和重要性。內(nèi)容包含:索引的概念和目標(biāo)、索引的優(yōu)點(diǎn)與缺點(diǎn)。此外,博客還深入解析了三種主要的索引結(jié)構(gòu):B-Tree、B+Tree和Hash,提供了詳細(xì)的結(jié)構(gòu)解析和優(yōu)化方法,并通過插圖進(jìn)一步增強(qiáng)了理解。 博客的部分內(nèi)容專注于對B-Tr

    2024年02月21日
    瀏覽(114)
  • 數(shù)據(jù)庫實(shí)驗(yàn)一:基本表操作、基本數(shù)據(jù)查詢和復(fù)雜數(shù)據(jù)查詢

    數(shù)據(jù)庫實(shí)驗(yàn)一:基本表操作、基本數(shù)據(jù)查詢和復(fù)雜數(shù)據(jù)查詢

    按下圖創(chuàng)建四個表:teacher、student、course和SC,為屬性選擇合適的域、合適的主碼和外鍵約束,并為他們插入所列出數(shù)據(jù); 中文語義 teacher (TID,TNAME,DEPT,SALARY) 教師(教工號,姓名,系,薪水) student (SID,SNAME,DEPT,AGE,GENDER) 學(xué)生(學(xué)號,姓名,系,年齡,性別) course (CID,CNAME,DE

    2024年02月01日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包