欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql索引對(duì)排序的影響實(shí)例分析

 更新時(shí)間:2019年07月11日 11:07:02   作者:webbc  
這篇文章主要介紹了mysql索引對(duì)排序的影響,結(jié)合實(shí)例形式分析了mysql使用索引提高排序速度的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了mysql索引對(duì)排序的影響。分享給大家供大家參考,具體如下:

索引不僅能提高查詢速度,還可以添加排序速度,如果order by 后面的語句用到了索引,那么將會(huì)提高排序的速度。

測試

1、創(chuàng)建測試表:t15表

CREATE TABLE `t15` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `cat_id` int(10) unsigned NOT NULL DEFAULT '0',
 `price` decimal(10,2) NOT NULL DEFAULT '0.00',
 `name` char(5) NOT NULL DEFAULT '',
 PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8

2、插入1W行數(shù)據(jù)

<?php
$db = 'test';
$conn = mysql_connect('localhost','root','1234');
mysql_query('use ' . $db , $conn);
mysql_query('set names utf8' , $conn);
for($i=1;$i<=10000;$i++) {
  $cat_id = rand(1,10);
  $price = rand(1,50000);
  $name = substr(str_shuffle('abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ234565789'),0,5);
  $sql = sprintf("insert into t15 values (%d,%d,%f,'%s')",$i,$cat_id,$price,$name);
  mysql_query($sql , $conn);
}

3、商場網(wǎng)站,一般都會(huì)按照某個(gè)分類進(jìn)行價(jià)格上的排序,我們來模擬一下,執(zhí)行同一條sql語句。

select name,cat_id,price from t15 where cat_id=1 order by price;

(1)首先不添加索引

從查詢分析可以看到Extra中使用到了Using filesort,表示需要進(jìn)行文件排序。

這里寫圖片描述

(2)給(cat_id,price)列添加索引

alter table t15 add index cp(cat_id,price);

這里的查詢分析中Extra沒用了Using filesort,表示添加上索引再進(jìn)行查詢的sql沒有使用到外部排序,而是使用到了索引的排序,因?yàn)樗饕旧砭褪菚?huì)排序的,所以不需要額外的order by一次。

這里寫圖片描述

4、觀測查詢時(shí)間

這里寫圖片描述

Query_ID為1的是沒有添加索引執(zhí)行的語句,Query_ID為3的是添加索引后執(zhí)行的語句,一個(gè)執(zhí)行時(shí)間為0.013秒,一個(gè)執(zhí)行時(shí)間為0.005秒,肯定是加上索引的快,我們來看看具體快在哪里

Query_ID為1的sql語句執(zhí)行詳細(xì)耗時(shí)圖:

這里寫圖片描述

Query_ID為3的sql語句執(zhí)行詳細(xì)耗時(shí)圖:

這里寫圖片描述

很明顯,Query_ID1中的Sorting result耗時(shí)0.012秒,而Query_ID2中的Sorting result只耗時(shí)0.000004秒,而這個(gè)Sorting result就是排序耗時(shí)。

結(jié)論:索引對(duì)排序的速度是有一定的影響的,所以,在實(shí)際的開發(fā)中,要結(jié)合實(shí)際情況制定索引,并盡可能將排序字段添加至索引中。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL索引操作技巧匯總》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫計(jì)有所幫助。

相關(guān)文章

  • mysql 字符串轉(zhuǎn)數(shù)組的實(shí)現(xiàn)示例

    mysql 字符串轉(zhuǎn)數(shù)組的實(shí)現(xiàn)示例

    有時(shí)候,我們需要將一個(gè)字符串拆分成一個(gè)數(shù)組,本文主要介紹了mysql 字符串轉(zhuǎn)數(shù)組的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • MySQL查看目前運(yùn)行狀況的兩種方法

    MySQL查看目前運(yùn)行狀況的兩種方法

    這篇文章給大家簡單的介紹一下MySQL查看目前運(yùn)行狀況命令,希望文章對(duì)大家會(huì)帶來一些幫助
    2014-02-02
  • MySQL分區(qū)表和分桶表的操作詳解

    MySQL分區(qū)表和分桶表的操作詳解

    這篇文章主要介紹了MySQL分區(qū)表和分桶表的操作,分區(qū)表和分桶表都是數(shù)據(jù)庫中的表,用于對(duì)數(shù)據(jù)進(jìn)行分區(qū)或分桶存儲(chǔ),以提高數(shù)據(jù)庫的性能和查詢效率,需要詳細(xì)了解可以參考下文
    2023-05-05
  • Mysql 5.7 忘記root密碼或重置密碼的詳細(xì)方法

    Mysql 5.7 忘記root密碼或重置密碼的詳細(xì)方法

    在Centos中安裝完MySQL數(shù)據(jù)庫以后,不知道密碼,這可怎么辦,下面給大家說一下怎么重置密碼
    2016-12-12
  • mysql InnoDB建表時(shí)設(shè)定初始大小的方法

    mysql InnoDB建表時(shí)設(shè)定初始大小的方法

    這篇文章主要介紹了mysql InnoDB建表時(shí)設(shè)定初始大小的方法,需要大家到MYSQL后臺(tái)實(shí)際操作方可以看到效果
    2013-11-11
  • 8種MySQL分頁方法總結(jié)

    8種MySQL分頁方法總結(jié)

    這篇文章主要介紹了8種MySQL分頁方法總結(jié),小編現(xiàn)在才知道,MySQL分頁竟然有8種實(shí)現(xiàn)方法,本文就一一講解了這些方法,需要的朋友可以參考下
    2015-01-01
  • MYSQL如何查詢成績?yōu)榍?名的學(xué)生

    MYSQL如何查詢成績?yōu)榍?名的學(xué)生

    這篇文章主要介紹了MYSQL如何查詢成績?yōu)榍?名的學(xué)生問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 更新text字段時(shí)出現(xiàn)Row size too large報(bào)錯(cuò)應(yīng)付措施

    更新text字段時(shí)出現(xiàn)Row size too large報(bào)錯(cuò)應(yīng)付措施

    個(gè)人建議:表的text字段很多建議建表時(shí)加上 row_format = dynamic當(dāng)然,回過頭來MySQL的報(bào)錯(cuò)也是有誤導(dǎo)性的,感興趣的你可以參考下本文
    2013-03-03
  • Mysql中JDBC的三種查詢(普通、流式、游標(biāo))詳解

    Mysql中JDBC的三種查詢(普通、流式、游標(biāo))詳解

    這篇文章主要介紹了Mysql中JDBC的三種查詢(普通、流式、游標(biāo))詳解,JDBC(Java DataBase Connectivity:java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系型數(shù)據(jù)庫提供統(tǒng)一訪問,它是由一組用Java語言編寫的類和接口組成的,需要的朋友可以參考下
    2023-08-08
  • MySQL curdate()函數(shù)的實(shí)例詳解

    MySQL curdate()函數(shù)的實(shí)例詳解

    這篇文章主要介紹了MySQL curdate()函數(shù)的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家理解應(yīng)用MysqL curdate()的使用方法,需要的朋友可以參考下
    2017-09-09

最新評(píng)論