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

mysql索引對排序的影響實例分析

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

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

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

測試

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)站,一般都會按照某個分類進行價格上的排序,我們來模擬一下,執(zhí)行同一條sql語句。

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

(1)首先不添加索引

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

這里寫圖片描述

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

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

這里的查詢分析中Extra沒用了Using filesort,表示添加上索引再進行查詢的sql沒有使用到外部排序,而是使用到了索引的排序,因為索引本身就是會排序的,所以不需要額外的order by一次。

這里寫圖片描述

4、觀測查詢時間

這里寫圖片描述

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

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

這里寫圖片描述

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

這里寫圖片描述

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

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

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

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

相關(guān)文章

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

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

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

    MySQL查看目前運行狀況的兩種方法

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

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

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

    Mysql 5.7 忘記root密碼或重置密碼的詳細方法

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論