高性能索引

高性能的索引策略:

1、独立的列:即始终将索隐裂单独放在比较符号的一侧

例如下面这条sql语句就不是独立的列:

select actor_id from test.actor where actor_id + 1 = 5 

应当使用独立的列才可以使之走索引:

select actor_id from test.actor where actor_id = 6 

2、前缀索引和索引的选择;优点为索引校小,缺点是不能做order by 和group by:

有时候需要索引很长的字符列(某个数据列的字符很大很长,例如存储url的列、blob列、TEXT列),这会让索引变得大且慢,一个策略是模拟哈希索引,有时候这样做还不够,通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率,但这样会降低索引的选择性。诀窍是选择足够长的前缀以保证较高的选择性,同时又不能太长(以便节约空间)。

前缀索引选择实例:

selelct count(distinct left(city, 3)) / count(*) as sel from test.city;

sel越大,对应自变量left所选择的字符数3越大,选择性越高;当变化的幅度由大变小时即可定位为选择性最优,这样就兼顾了长前缀且高选择性且索引值最小。

创建缀索引创建实例:

mysql>alter table test.city add key (city(7));

 --这里多次尝试只有 left(city, 7)是最优解,所以这里选择7个字符的前缀作为索引。

3、多列索引

>当出现服务器对多个索引做相交操作时(通常由多个and条件),通常意味着需要一个包含多有相关列的多列索引,而不是多个独立的单列索引。

>当服务器对多个索引做联合操作时(通常有多个or条件)通常需要消耗大量的cpu和内存资源 在算法的缓存、排序和合并上,特别 是当其中有些索引的选择性不高,需要合并扫描返回的大量数据的时候。

4、选择合适的索引列顺序

对于如何选择索引的列顺序有一个经验法则:将选择性最高的列放到索引最前列。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,123评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,031评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,723评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,357评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,412评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,760评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,904评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,672评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,118评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,456评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,599评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,264评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,857评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,731评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,956评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,286评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,465评论 2 348

推荐阅读更多精彩内容

  • 创建高性能索引 索引是什么?有什么作用? 索引是存储引擎用于快速找到记录的一种数据结构 如书的目录索引一般,数据库...
    esrever阅读 651评论 0 0
  • 索引基础 索引的类型 B-Tree索引 当人们谈论索引时,如果没有特别指明类型,那多半说的是B-Tree索引。存储...
    coolcao阅读 466评论 1 3
  • 1.1 索引基础 简单讲,索引就是书籍后面的“索引”-Index,帮助我们找到特定主题、词语,然后告诉我们具体对应...
    CaesarXia阅读 841评论 0 5
  • 1 独立的列 如果查询的列不是独立的,那么MySQL不会使用索引。“独立索引”是指索引列不能是表达式的一部分,也不...
    Q南南南Q阅读 1,095评论 0 0
  • 写在前面:索引的三个优点: 索引大大减少了服务器需要扫描的数据量 索引可以帮助服务器避免排序和临时表 索引可以将随...
    vckah阅读 173评论 0 0