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

MySQL索引使用全程分析

 更新時間:2012年11月12日 09:58:26   作者:  
本文將介紹MySQL索引詳細使方法;需要的朋友可以參考下
創(chuàng)建2張用戶表user、user2,表結(jié)構(gòu)相同,但user表使用InnoDB存儲引擎,而user2表則使用 MyISAM存儲引擎。
復(fù)制代碼 代碼如下:

-- Table "user" DDL
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`age` tinyint(4) DEFAULT NULL,
`nickname` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `name` (`name`),
KEY `age` (`age`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Table "user2" DDL
CREATE TABLE `user2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`age` tinyint(4) DEFAULT NULL,
`nickname` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `name` (`name`),
KEY `age` (`age`)
) ENGINE=MyISAM AUTO_INCREMENT=131610 DEFAULT CHARSET=utf8;

分別插入10W條測試數(shù)據(jù)到表user & user2。
復(fù)制代碼 代碼如下:

<?php
$example = array(
'@qq.com',
'@sina.com.cn',
'@163.com',
'@126.com',
'@gmail.com',
'@yahoo.com',
'@live.com',
'@msn.com',
'@cisco.com',
'@microsoft.com',
'@ibm.com',
'@apple.com');
$con = mysql_connect("localhost", "root", "your_mysql_password");
mysql_select_db("index_test", $con);
//添加10W測試數(shù)據(jù)到表 user & user2
for($i=0; $i<100000; $i++)
{
$temp = md5(uniqid());
$name = substr($temp, 0, 16);
$email = substr($temp, 8, 12).$example[array_rand($example, 1)];
$age = rand(18, 99);
$nickname = substr($temp, 16, 16);
mysql_query("INSERT INTO user(name,email,age,nickname) VALUES('$name','$email',$age,'$nickname')");
mysql_query("INSERT INTO user2(name,email,age,nickname) VALUES('$name','$email',$age,'$nickname')");
}
mysql_close($con);

echo 'success';
?>

對索引的使用分析
Explain Select * from user where id>100 \G;
 
圖1
Explain Select * from user2 where id>100 \G;
 
圖2
User 表中的數(shù)據(jù)和 User2 表中的數(shù)據(jù)是一樣的,索引結(jié)構(gòu)也是一樣的,只不過它們的存儲引擎不同。在圖1中,查詢用到了PRIMARY主鍵索引,而查詢優(yōu)化器預(yù)估的結(jié)果大概在65954行左右(實際是131513);在圖2中,查詢卻沒有使用索引,而是全表掃描了,返回的預(yù)估結(jié)果在131608行(實際是131509)。
Explain Select * from user where id>100 and age>50 \G;
 
圖3
Explain Select * from user where id>100 and age=50 \G;
 
圖4
Explain Select * from user2 where id>100 and age>50 \G;
 
圖5
Explain Select * from user2 where id>100 and age=50 \G;
 
圖6

相關(guān)文章

  • 基于mysql樂觀鎖實現(xiàn)秒殺的示例代碼

    基于mysql樂觀鎖實現(xiàn)秒殺的示例代碼

    本文主要介紹了基于mysql樂觀鎖實現(xiàn)秒殺,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 出現(xiàn)錯誤mysql Table ''performance_schema...解決辦法

    出現(xiàn)錯誤mysql Table ''performance_schema...解決辦法

    這篇文章主要介紹了解決出現(xiàn)錯誤mysql Table 'performance_schema.session_variables' doesn't exist的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • mysql學(xué)習(xí)筆記之表的基本操作

    mysql學(xué)習(xí)筆記之表的基本操作

    本文給大家分享的是MySQL學(xué)習(xí)筆記系列文章的入門篇,主要講述MySQL表的基本操作命令,非常詳細,有需要的小伙伴可以來查看下
    2017-02-02
  • Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解

    Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解

    今天小編就為大家分享一篇關(guān)于Mysql查看最大連接數(shù)和修改最大連接數(shù)的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL之存儲過程按月創(chuàng)建表的方法步驟

    MySQL之存儲過程按月創(chuàng)建表的方法步驟

    這篇文章主要介紹了MySQL之存儲過程按月創(chuàng)建表的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • MySQL全局共享內(nèi)存介紹

    MySQL全局共享內(nèi)存介紹

    這篇文章主要介紹了MySQL全局共享內(nèi)存介紹,全局共享內(nèi)存則主要是 MySQL Instance(mysqld進程)以及底層存儲引擎用來暫存各種全局運算及可共享的暫存信息,如存儲查詢緩存的 Query Cache,緩存連接線程的 Thread Cache等等,需要的朋友可以參考下
    2014-12-12
  • MySQL高級查詢之與Group By集合使用介紹

    MySQL高級查詢之與Group By集合使用介紹

    在MySQL中,你可以獲取表達式組合的連接值。你可以使用DISTINCT刪去重復(fù)值。假若你希望多結(jié)果值進行排序,則應(yīng)該使用 ORDER BY子句
    2013-08-08
  • MySQL內(nèi)連接和外連接及七種SQL?JOINS的實現(xiàn)

    MySQL內(nèi)連接和外連接及七種SQL?JOINS的實現(xiàn)

    這篇文章主要介紹了Mysql內(nèi)連接和外連接的區(qū)別以及七種SQL?Joins的實現(xiàn),相信看完這篇文章你對SQL內(nèi)外連接的多表查詢就足夠理解了,需要的朋友可以參考下
    2023-03-03
  • Mysql復(fù)制表三種實現(xiàn)方法及grant解析

    Mysql復(fù)制表三種實現(xiàn)方法及grant解析

    這篇文章主要介紹了Mysql復(fù)制表三種實現(xiàn)方法及grant解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • mysql5.5中文亂碼問題解決的有用方法

    mysql5.5中文亂碼問題解決的有用方法

    在使用MYSQL時遇到中文亂碼的問題,表現(xiàn)為插入數(shù)據(jù)后查詢時輸出為??(亂碼),下面這篇文章主要給大家介紹了關(guān)于mysql5.5中文亂碼問題解決的有用方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-05-05

最新評論