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

查詢優(yōu)化之單表查詢

這篇具有很好參考價值的文章主要介紹了查詢優(yōu)化之單表查詢。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

建表

CREATE TABLE IF NOT EXISTS `article` (
`id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
`author_id` INT(10) UNSIGNED NOT NULL,
`category_id` INT(10) UNSIGNED NOT NULL,
`views` INT(10) UNSIGNED NOT NULL,
`comments` INT(10) UNSIGNED NOT NULL,
`title` VARBINARY(255) NOT NULL,
`content` TEXT NOT NULL
);
 
INSERT INTO `article`(`author_id`, `category_id`, `views`, `comments`, `title`, `content`) VALUES
(1, 1, 1, 1, '1', '1'),
(2, 2, 2, 2, '2', '2'),
(1, 1, 3, 3, '3', '3');
 
SELECT * FROM article;

查詢優(yōu)化之單表查詢

例題

  • 查詢 category_id 為1 且 comments 大于 1 的情況下,views 最多的 article_id

一般

我們一般會使用以下語句查詢

EXPLAIN SELECT id,author_id FROM article WHERE category_id = 1 AND comments > 1 ORDER BY views DESC LIMIT 1;

查詢優(yōu)化之單表查詢
這個sql語句的type是all,并且Extra里面出現(xiàn)了Using filesort,這個必須優(yōu)化

添加索引

CREATE INDEX idx_article_ccv ON article(category_id,comments,views);

我們再次進(jìn)行上面語句的查詢

EXPLAIN SELECT id,author_id FROM article WHERE category_id = 1 AND comments > 1 ORDER BY views DESC LIMIT 1;

查詢優(yōu)化之單表查詢
我們可以看到type變成了range,但是extra里面卻是Using filesort ,這個性能有點差

優(yōu)化索引

BTree 索引的工作原理
  1. 他會先排序category_id
  2. 遇到相同的category_id 在排序comments
  3. 遇到相同的comments 在排序views

在上面語句中comments > 1 是一個范圍值(所謂range),range 類型查詢字段后面的索引無效,所以MySQL 無法利用索引再對后面的 views 部分進(jìn)行檢索

進(jìn)行優(yōu)化
  1. 我們刪除索引后進(jìn)行新建索引
DROP INDEX idx_article_ccv ON article;
  1. 新建索引
CREATE INDEX idx_article_cv ON article(category_id,views);
  1. 執(zhí)行slq語句
EXPLAIN SELECT id,author_id FROM article WHERE category_id = 1 AND comments > 1 ORDER BY views DESC LIMIT 1;

查詢優(yōu)化之單表查詢
我們發(fā)現(xiàn)type變成了ref,也沒有存在Using filesort了文章來源地址http://www.zghlxwxcb.cn/news/detail-430166.html

到了這里,關(guān)于查詢優(yōu)化之單表查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Unable to create ‘.../.git/index.lock‘: File exists.(git報錯)

    Unable to create ‘.../.git/index.lock‘: File exists.(git報錯)

    (1)具體報錯信息 無法進(jìn)行提交代碼與切換分支,vscode卡死 (2)解決方法找到項目git下對應(yīng)的index.lock手動刪除 (3)具體原因index.lock ????????在進(jìn)行某些比較費時的git操作時自動生成,操作結(jié)束后自動刪除,相當(dāng)于一個鎖定文件,目的在于防止對一個目錄同時進(jìn)行多個

    2024年02月02日
    瀏覽(99)
  • R語言【base】——dir.exists()和dir.create()目錄和文件權(quán)限的操作

    Package? base ?version 4.3.2 參數(shù)【path】 :是一個字符向量,包含一個路徑名。 參數(shù)【paths】 :字符向量,其中包含文件或目錄路徑。 參數(shù)【showWarnings】 :邏輯值。是否應(yīng)顯示失敗警告? 參數(shù)【recursive】 :邏輯值。是否應(yīng)該創(chuàng)建路徑中除最后一個元素之外的其他元素?如果為

    2024年02月04日
    瀏覽(25)
  • git-Unable to create ‘.../.git/index.lock‘: File exists.(git報錯)

    git-Unable to create ‘.../.git/index.lock‘: File exists.(git報錯)

    (1)具體報錯信息 無法進(jìn)行提交代碼與切換分支,vscode卡死 (2)解決方法找到項目git下對應(yīng)的index.lock手動刪除 (3)具體原因index.lock ????????在進(jìn)行某些比較費時的git操作時自動生成,操作結(jié)束后自動刪除,相當(dāng)于一個鎖定文件,目的在于防止對一個目錄同時進(jìn)行多個

    2024年02月19日
    瀏覽(24)
  • [已解決]ln: failed to create symbolic link ‘/usr/bin/python’: File exists

    安裝python3 在添加軟鏈時報錯如下(翻譯過來的意思就是:創(chuàng)建符號鏈接失敗,文件存在。) 解決辦法1,加個f參數(shù)覆蓋之前存在的文件 把? -s ?命令修改成? -sf ?命令; -f? 命令的意思是強制執(zhí)行,也就意味著如果不存在就執(zhí)行創(chuàng)建,存在就執(zhí)行覆蓋掉 ?解決辦法2,先 刪除

    2024年02月15日
    瀏覽(24)
  • 【git學(xué)習(xí)】解決git提交代碼時報錯: Unable to create ‘XXX/.git/index.lock‘: File exists.

    【git學(xué)習(xí)】解決git提交代碼時報錯: Unable to create ‘XXX/.git/index.lock‘: File exists.

    使用git提交代碼的時候,出現(xiàn)了 Unable to create \\\'.git/index.lock\\\' File exists 問題,如下所示: Git 執(zhí)行操作時會自動生成 index.lock 文件,操作結(jié)束后會自動刪除。這樣做的目的是避免同時操作同一個文件夾。 錯誤提示我們: 因此,我們刪除該目錄下的 .git/index.lock 文件即可 刪除之后

    2024年02月11日
    瀏覽(16)
  • MySQL查詢練習(xí)-單表查詢

    查詢出部門編號為30的所有員工: 所有銷售員的姓名、編號和部門編號: 找出獎金高于工資的員工: 找出獎金高于工資60%的員工: 找出部門編號為10中所有經(jīng)理,和部門編號為30中所有銷售員的詳細(xì)資料: 找出部門編號為10中所有經(jīng)理,部門編號為30中所有銷售員,還有即不

    2024年02月13日
    瀏覽(17)
  • git問題解決:git add . 時,fatal: Unable to create ‘xxx/.git/index.lock‘: File exists.

    造成的原因是在某些比較費時的git操作時自動生成 index.lock文件,操作結(jié)束后自動刪除,相當(dāng)于一個鎖定文件,目的在于防止對一個目錄同時進(jìn)行多個操作。? 有時強制關(guān)閉進(jìn)行中的git操作,這個文件沒有被自動刪除,之后你就無法進(jìn)行其他操作,必須手動刪除,進(jìn)入.git文件

    2024年02月08日
    瀏覽(28)
  • docker 啟動容器異常Error response from daemon: OCI runtime create failed: container with id exists

    docker 啟動容器異常Error response from daemon: OCI runtime create failed: container with id exists

    問題描述 docker服務(wù)異常停止,重啟docker后,容器啟動失敗 錯誤信息 Error response from daemon: OCI runtime create failed: container with id exists: xxx unknown 錯誤原因 docker啟動的時候,會在運行目錄(/var/run/docker/runtime-runc/moby)(不同環(huán)境,可能目錄不一樣,可以通過 find / -name \\\'容器ID\\\' 查找

    2024年02月16日
    瀏覽(26)
  • SQL 相關(guān)子查詢 和 不相關(guān)子查詢、Exists 、Not Exists、 多表連接(包含自連接)

    SQL 相關(guān)子查詢 和 不相關(guān)子查詢、Exists 、Not Exists、 多表連接(包含自連接)

    不相關(guān)子查詢 子查詢的查詢條件不依賴于父查詢,稱不相關(guān)子查詢。子查詢可以單獨運行的 相關(guān)子查詢 ==== 關(guān)聯(lián)子查詢 子查詢的查詢條件依賴于父查詢,稱為 相關(guān)子查詢。子查詢不能單獨運行的 子查詢 也稱 內(nèi)部查詢 父查詢 也稱 外部查詢 如果子查詢的執(zhí)行依賴于外部查

    2024年02月14日
    瀏覽(68)
  • 數(shù)據(jù)庫的簡單查詢——單表查詢

    數(shù)據(jù)庫的簡單查詢——單表查詢

    本篇文章主要是數(shù)據(jù)庫的一些簡單查詢,包括條件查詢,模糊查詢,分組查詢等 準(zhǔn)備工作:三張數(shù)據(jù)表 ? ? ? ? ? ? ? ?學(xué)生表(student): ? ? ? ? ? ? ? ? ? ? ? ? ? ?課程表(course): ? ? ? ? ?學(xué)生選課表(sc): ? ? (1)查詢學(xué)生表中全體學(xué)生的所有信息。 SQL語句:

    2023年04月11日
    瀏覽(15)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包