mysql--测试前缀索引能否用于order by 或者 group by

创建一个测试用表

mysql> desc two;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| pid   | int(11)     | YES  | MUL | NULL    |                |
| name  | varchar(10) | NO   | MUL | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

向里边插入10000条数据,不会写存储过程,只能用shell插入了

#!/bin/bash

#产生指定范围的随机数
function rand(){
        min=$1
        max=$(($2-$1+1))
        num=$(($RANDOM+100000000))
        echo $(($num%$max+$min))
}
for j in {1..100}
do
        sql=‘insert into two (pid,name) values ‘;
        for i in {1..100}
        do
                randnum=$(rand 1 10000)
                randstr=$(date +%s%N | md5sum | head -c 10)
                sql=$sql"(‘$randnum‘,‘$randstr‘),"
        done
        sql=${sql%,*}
        /home/work/.jumbo/bin/mysql -u root -p123 -e "use test; $sql"
done
时间: 2024-10-14 10:08:19

mysql--测试前缀索引能否用于order by 或者 group by的相关文章

手把手教你:微信棋牌源码 MySQL的前缀索引

MySQL的前缀索引 微信棋牌源码咨询Q 2171793408 官网地址:http://wowotouba.com/h5 MySQL的前缀索引指的是对指定的栏位的前面几位建立的索引. Altertable Table_Name add key(column_name(prefix_len)); 或者 Createindex index_name on Table_Name(column_name(prefix_len)); 建立前缀索引后,可以直接当做普通索引进行过滤. Select ..fro

mysql前缀索引

应用场景: 数据库里有个地址(address)字段,类型为varchar(100),业务决定了要经常根据address来进行查询. 确定选择性: Sql代码 SELECT count(DISTINCT(address))/count(*) AS Selectivity FROM info; +-------------+ | Selectivity | +-------------+ |      0.8745 | +-------------+ <address>选择性很好,但是长度为100

MySQL如何利用索引优化ORDER BY排序语句

MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度. MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作. 通过索引优化来实现MySQL的ORDER BY语句优化: 1.ORDER BY的索引优化.如果一个SQL语句形如:SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort];在[sort]这个栏位上建立索引就可以实现利用索引进行order by

MySQL索引之前缀索引和索引选择性

有时需要索引很长的字符列,它会使索引变大而且变慢.一个策略就是模拟哈希索引.但是有时这也不够好,那? 通常可以索引开始的几个字符,而不是全部值,以节约空间并得到好的性能.这使索引需要的空间变小,但是也会降低选择性.索引选择性是不重复的索引值 和表中所有行的比值.高选择性的索引有好处,因为它使mysql在查找匹配的时候可以过波掉更多的行.唯一索引的选择率为1,为最佳值. 如果索引BLOG和TEXT列,或者很长的varchar列,就必须定义前缀索引,因为mysql不允许索引它们的全文化. 可以在同一

mysql测试索引在表中的作用

实验内容 单表中的索引使用 1.建表 create table t_book(id int,a1 varchar(200),a2 varchar(200),a3 varchar(200),a4 varchar(200),a5 varchar(200),a6 varchar(200),a7 varchar(200),a8 varchar(200),a9 varchar(200)) 2.写存储过程向表中插入较大数据//或其他方式使数据增大 (1)绑定变量: PREPARE stmt1 FROM 'i

Mysql中的联合索引、前缀索引、覆盖索引

索引 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度. 联合索引 又名复合索引,由两个或多个列的索引.它规定了mysql从左到右地使用索引字段,对字段的顺序有一定要求.一个查询可以只使用索引中的一部分,更准确地说是最左侧部分(最左优先).如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效. CR

MySQL 性能优化---索引及优化

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一.MySQL性能优化之-影响性能的因素 1.商业需求的影响 Myisam存储引擎内置一个计数器,count(*)时直接从计数器读取:而通过innodb存储引擎查找某个数据时,是必须扫描全表的,所以当执行对表的统计(即使用count(*)函数)时,myisam要比innodb要快的很多.所以一般在innodb上执行count(*)时一般要

Mysql5.7—mysql性能优化-索引、语句、配置(运维必备)

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一. 数据库的类型 1) 第一代数据库: 基于层次模型与网状模型的数据库 层次型数据库比较经典的是IBM公司的IMS(InformationManagement System)数据库,层次型数据库提供了良好的完整性支持,模型简单,对具有一对多层关系的部们描述非常自然.直观,容易理解,比较适用于那些实体间联系是固定的且预先定义好的环境,其性能优于关

mysql性能优化-索引与优化

http://hongge.blog.51cto.com/ 一.MySQL性能优化之-影响性能的因素 1.商业需求的影响 不合理需求造成资源投入产出比过低,这里我们就用一个看上去很简单的功能来分析一下. 需求:一个论坛帖子总量的统计,附加要求:实时更新 从功能上来看非常容易实现,执行一条SELECT COUNT(*) from 表名 的Query 就可以得到结果.但是,如果我们采用不是MyISAM 存储引擎,而是使用的Innodb 的存储引擎,那么大家可以试想一下,如果存放帖子的表中已经有上千万