mysql 高性能的索引
来源:互联网 发布:曾舜晞粤读软件 编辑:程序博客网 时间:2024/05/16 19:02
1 建立独立的列.
独立的列 指索引列不能是表达式的一个部分, 也不能是函数的参数.
select actor_id from actor where actor_id +1 = 5; 错误写法.
select ..... from .. where to_days(current_date) - to_days(date_col) <= 10; 错误写法
2. 前缀索引和索引选择性
2.1 索引字段长 会引起索引比较慢. 索引表会占用太大空间.
2.2 模拟哈希索引. 用 CRC32 建立索引key
2.3 索引应用字段的前缀字符做索引.
创建前缀索引:
alter table city_demo add key(city(7));
3. 多列索引.
1. 在多列上建立独立的单列索引大部分情况下并不能提高mysql的查询性能. 可以运用合并索引功能 (index merge).一定程度上可以使用表上的多个单列索引来定位指定的行.
select file_id actor_id from file_actor where actor_id = 1 or film_id = 1; mysql 版本必须大于5.0
4. 选择合适的索引列顺序
正确的顺序依赖于使用该索引的查询.并且同时需要考虑如何更好地满足排序和分组需要.
order by ; group by; distinct;
规则: 1. 选择性最高的列放在索引最前列. 避免随机IO和排列顺序那么重要.
select sum(staff_id =2), sum(custormer_id = 485) from payment ; 获取
sum (staff= 2) : 7992
sum(custormer=384) : 17
那么 蒋 custormer 放在前面. 将 staff 放在后面.
alter table payment Add key(curstorment_id, staff_id);
5 聚簇索引
InnoDB 通过主键聚集数据.
在 innoDB 表中按主键顺序插入行. 如果没有主键, 就用 auto_increment 自增加主键. 最好避免随机值做聚簇索引.
6 覆盖索引
1. 应用 where 条件建立索引查询.
2. 设计查询需要考虑整个查询. 包括 order by, group by ,desc. 等.
7 使用索引扫描来做排序.
在执行 Explain 的时候 查看 type 是否是index.
8 冗余和重复索引
避免重复索引
- mysql 高性能的索引
- 高性能的MySQL索引
- Mysql 高性能索引
- MySQL高性能 创建高性能的索引
- 高性能Mysql——创建高性能的索引
- [高性能MySQL]-创建高性能的索引
- 高性能Mysql 3(创建高性能的索引)
- [ 笔记 ] mysql创建高性能的索引
- Mysql高性能索引的策略
- Mysql之高性能的索引策略
- mysql高性能索引的探索
- MySQL创建高性能的索引
- 如何创建高性能的MySQL索引
- mysql创建高性能的索引
- 高性能mysql(二) 高性能索引
- 高性能的MySQL(5)索引策略一聚簇索引
- 高性能的MySQL(5)索引策略一聚簇索引
- mysql 高性能索引策略
- IOS开发之实现App消息推送(最新)
- 基类加析构函数加virtual的重要性
- css3圆角tab选项卡代码
- 【趋势科技实习录】UI添加滚动条
- CKEditor实现图片上传
- mysql 高性能的索引
- 上传头像功能
- 模拟日历计算 poj1008
- C++常见笔试题
- jquery实现加载更多
- nginx+redis+lua 共享内存
- Exception in thread "http-bio-8080-exec-2" java.lang.OutOfMemoryError: PermGen space
- eclipse使用笔记(一):eclipse老是提示loading description for的解决办法
- android studio appcompat-v7:22.0.0包与support-v4:22.0.0包问题