首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何为必须为每个子组选择顶行的大表建立有效的索引?

为必须为每个子组选择顶行的大表建立有效的索引,可以按照以下步骤进行:

  1. 确定索引的目的:首先需要明确索引的目的是为了提高查询性能还是为了优化数据修改操作。不同的目的可能需要不同的索引策略。
  2. 分析查询需求:了解需要经常执行的查询操作,包括查询条件、排序需求等。根据查询需求来确定需要创建的索引类型和字段。
  3. 选择合适的索引类型:根据查询需求选择适合的索引类型,常见的索引类型包括B树索引、哈希索引、全文索引等。不同的索引类型适用于不同的查询场景。
  4. 选择合适的索引字段:根据查询需求选择合适的索引字段,通常选择经常被查询的字段作为索引字段。同时需要考虑字段的选择性,即字段值的唯一性或重复性,选择性越高的字段通常效果越好。
  5. 考虑联合索引:如果查询条件涉及多个字段,可以考虑创建联合索引。联合索引可以提高多个字段组合查询的性能。
  6. 避免过多索引:过多的索引会增加数据修改的开销,并且占用额外的存储空间。需要根据实际需求权衡索引的数量和性能提升。
  7. 定期维护索引:索引的维护包括索引重建、统计信息更新等操作。定期进行索引维护可以保证索引的有效性和性能。
  8. 监控索引性能:通过监控索引的使用情况和性能指标,及时发现并解决索引性能问题。

对于腾讯云相关产品,可以使用腾讯云数据库(TencentDB)来管理和优化索引。腾讯云数据库提供了多种数据库引擎和存储类型,可以根据实际需求选择适合的产品。具体产品介绍和链接地址可以参考腾讯云官方网站的相关文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面银行软开,我最自信了!!

农行 行锁和表锁的区别? 表锁的锁粒度比行锁大,表锁是锁住整张数据库表,而行锁只锁住某一行记录,使用行锁的并发性能会比行锁更高。...它定义了一组通用的操作和方法,如添加、删除、遍历等,用于操作和管理一组对象。Collection接口有许多实现类,如List、Set和Queue等。...代码题 用两个栈实现队列 十进制转二进制 交通银行 说一下主键和索引 主键是用于唯一标识数据库表中每一行数据的字段或字段组合。它具有以下特点: 主键必须是唯一的,每一行数据都必须具有唯一的主键值。...主键不能为NULL,即主键字段的值不能为空。 一个表只能有一个主键。 主键的作用是保证每一行数据的唯一性,并且可以通过主键来快速定位和访问表中的数据。 索引是一种数据结构,用于加快数据库表的查询速度。...它通过创建索引来提高数据的检索效率。索引可以建立在一个或多个列上,这些列可以是表中的任意字段。索引的创建过程会对指定的列进行排序和存储,以便快速定位和访问数据。

44610

如何写优雅的SQL原生语句?

HAVING子句主要和GROUP BY子句配合使用,having筛选器是第一个也是为唯一一个应用到已分组数据的筛选器。 8. select 执行select操作,选择指定的列,插入到虚拟表T6中。...(注意:事实上如果应用了group by子句那么distinct是多余的,原因同样在于,分组的时候是将列中唯一的值分成一组,同时只为每一组返回一行记录,那么所以的记录都将是不相同的。...操作中任何一个子句可使用索引都会提高查询性能,但是or条件中任何一个不能使用索引,都将导致查询性能下降,如where member_no = 1 or provider_no = 1,在member_no...或provider_no任何一个字段上没有索引,都将导致表扫描或聚簇索引扫描(索引相关) Between一般比in/or高效得多,如果能在between和in/or条件中选择,那么始终选择between...,join操作是自顶向下的,尽量把结果集小的两个表关联放在前面,可提高性能。

1.9K20
  • SQL Server查询优化 (转载非原创)

    从上至下优化看过一篇文章,印象深刻,里面将数据库查询优化分为四个大的方向使用钞能力——给DB服务器加物理配置,内存啊,CPU啊,硬盘啊,全上顶配替换存储系统——根据实际的业务情况选择不同的存储数据库,比如用...如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。可以简单理解为数据表中的数据按照既定的顺序进行存储,而这个用来排序的字段就是聚集索引。...也可以理解为一个个由Key-Value组成的元素分布在一棵B+树上,Key对应的就是索引,Value对应的就是具体的数据行。非聚集索引非聚集索引具有独立于数据行的结构。...,则Value为指向表中数据行的指针。...A=1 AND C=3 AND D=4索引之覆盖索引何为覆盖索引?

    68620

    腾讯2014校园招聘软件开发类笔试试题

    在Age字段上添加索引 解析: 索引:对数据库表中一列或多列的值进行排序(或构成特定的数据结构,如树或哈希表)的一种结构,使用索引可快速访问数据库表中的特定信息。  ...优点: 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性 可以大大加快数据的检索速度 可以加快表与表之间的连接 使用分组和排序子句进行检索时,同样可以显著减少查询中分组和排序的事件 在查询的过程中优化隐藏器...,提高系统的性能  缺点: 创建和维护所以你需要耗费时间 索引需要占物理空间,如果建立聚簇索引,需要的空间更大 表的数据更新时,索引也要动态的维护 建立索引的规则: 表的主键、外键必须有索引;...数据量超过300的表应该有索引; 经常与其他表进行连接的表,在连接字段上应该建立索引; 经常出现在Where子句中的字段,特别是大表的字段,应该建立索引; 索引应该建在选择性高的字段上; 索引应该建在小字段上...,对于大的文本字段甚至超长字段,不要建索引; 复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:    正确选择复合索引中的主列字段,一般是选择性较好的字段;    复合索引的几个字段是否经常同时以

    75320

    疯狂java笔记之常用的内部排序

    如果参与排序的数据元素非常多,数据量非常大,计算机无法把整个排序过程放在内存中完成,必须借助外部存储器(如磁盘),这种排序就被称为外部排序。...通过上面的介绍不难发现一点,小顶堆的任意子树也是小顶堆,大顶堆的任意子树还是大顶堆。 比如,判断数据序列如:9,30,499,46,58,79 是否为堆,将其转换为一颗完全二叉树,如下图: ?...第2趟:将索引0~n-2处的全部数据建成大顶〔或小顶)堆,就可以选择出这组数据中的最大大的时候,数据项每一趟排序需要移动元素的个数很少,但数据项移动的距离很长,这是非常有效率的。...当h减小时,每一趟排序需要移动的元素的个数增多,但是此时数据项己经接近于它们排序后最终的位置,这对于插入排序可以更有效率。正是这两种情况的结合才使Shell排序效率这么高。

    78210

    值得收藏:一份非常完整的 MySQL 规范

    保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) · 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 · 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期...(表越宽,把表装载进内存缓冲池时所占用的内存也就越大,也会消耗更多的IO) 更有效的利用缓存,避免读入无用的冷数据 经常一起使用的列放到一个表中(避免更多的关联操作) 7、禁止在表中建立预留字段 预留字段的命名很难做到见名识义...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...,通常将1、2中的字段建立联合索引效果更好 · 多表join的关联列 六、如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少...12、禁止使用order by rand() 进行随机排序 会把表中所有符合条件的数据装载到内存中,然后在内存中对所有数据根据随机生成的值进行排序,并且可能会对每一行都生成一个随机值,如果满足条件的数据集非常大

    90130

    值得收藏:一份非常完整的 MySQL 规范

    ,并且最后不要超过32个字符 · 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 · 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换...IO) 更有效的利用缓存,避免读入无用的冷数据 经常一起使用的列放到一个表中(避免更多的关联操作) 7、禁止在表中建立预留字段 预留字段的命名很难做到见名识义 预留字段无法确认存储的数据类型,所以无法选择合适的类型...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...,通常将1、2中的字段建立联合索引效果更好 · 多表join的关联列 六、如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少...12、禁止使用order by rand() 进行随机排序 会把表中所有符合条件的数据装载到内存中,然后在内存中对所有数据根据随机生成的值进行排序,并且可能会对每一行都生成一个随机值,如果满足条件的数据集非常大

    97330

    值得收藏:一份非常完整的 MySQL 规范

    保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) · 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 · 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期...(表越宽,把表装载进内存缓冲池时所占用的内存也就越大,也会消耗更多的IO) 更有效的利用缓存,避免读入无用的冷数据 经常一起使用的列放到一个表中(避免更多的关联操作) 7、禁止在表中建立预留字段 预留字段的命名很难做到见名识义...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...,通常将1、2中的字段建立联合索引效果更好 · 多表join的关联列 六、如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少...12、禁止使用order by rand() 进行随机排序 会把表中所有符合条件的数据装载到内存中,然后在内存中对所有数据根据随机生成的值进行排序,并且可能会对每一行都生成一个随机值,如果满足条件的数据集非常大

    76230

    海量数据处理:算法

    通常情况下,如果需要处理的数据量非常大,超过了TB级,小型机、大型工作站是要考虑的,普通计算机如果有好的方法也可以考虑,如通过联机做成工作集群。...(2)取模法 选择一个合适的正整数p,令hash(Key) = key mod p。p如果选择的是比较大的素数,则效果比较好,一般选取p为TableSize,即哈希表的长度。...(3)索引 索引一般可以加速数据的检索速度,加速表与表之间的链接,提高性能,所以在对海量数据进行处理时,考虑到信息量比较大,应该对表建立索引,包括在主键上建立聚簇索引,将聚合索引建立在日期列上等。...索引优点很多,但是对于索引的建立,还需要考虑到实际情况,而不是对每一个列建立一个索引。例如,针对大表的分组、排序等字段,都要建立相应的索引,同时还应该考虑建立复合索引。...在堆中,以大顶堆为例,堆的根结点的值最大,且根结点的两个子树也是一个大顶堆,基于以上特点,堆适用于海量数据求前N大(用小顶堆)或者前N小(用大顶堆)数问题,其中N一般比较小。

    94220

    八大排序算法详解_面试+提升

    简单选择排序的改进——二元选择排序 简单选择排序,每趟循环只能确定一个元素排序后的定位。我们可以考虑改进为每趟循环确定两个元素(当前趟最大和最小记录)的位置,从而减少排序所需的循环次数。...选择排序—堆排序(Heap Sort) 堆排序是一种树形选择排序,是对直接选择排序的有效改进。 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 ?...如: (a)大顶堆序列:(96, 83,27,38,11,09) (b) 小顶堆序列:(12,36,24,85,47,30,53,91) ?...算法的实现: 从算法描述来看,堆排序需要两个过程,一是建立堆,二是堆顶与堆的最后一个元素交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数实现排序的函数。 ? ?...归并排序(Merge Sort) 基本思想: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。

    1.3K90

    MySQL高性能优化规范建议,速度收藏

    ,并且最后不要超过 32 个字符•临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以 bak_为前缀并以日期 (时间戳) 为后缀•所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换...所有表必须使用 Innodb 存储引擎 没有特殊要求(即 Innodb 无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用 Innodb 存储引擎(MySQL5.5 之前默认使用 Myisam...6.尽量做到冷热数据分离,减小表的宽度 MySQL 限制每个表最多存储 4096 列,并且每一行数据的大小不能超过 65535 字节。...禁止给表中的每一列都建立单独的索引 5.6 版本之前,一个 sql 只能使用到一个表中的一个索引,5.6 以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3...., 通常将 1、2 中的字段建立联合索引效果更好•多表 join 的关联列 ---- 5.如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机 IO,增加查询性能 ,索引能过滤出越少的数据

    76120

    一份完整的 MySQL 开发规范,进大厂必看!

    mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 3、数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 4、临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。...,通常将1、2中的字段建立联合索引效果更好 3、多表join的关联列 六、如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少...12、禁止使用order by rand() 进行随机排序 会把表中所有符合条件的数据装载到内存中,然后在内存中对所有数据根据随机生成的值进行排序,并且可能会对每一行都生成一个随机值,如果满足条件的数据集非常大...binlog日志为row格式时会产生大量的日志 大批量写操作会产生大量日志,特别是对于row格式二进制数据而言,由于在row格式中会记录每一行数据的修改,我们一次修改的数据越多,产生的日志量也就会越多

    84320

    面试官:你对MySQL高性能优化有什么规范建议?

    并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换...所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为...尽量做到冷热数据分离,减小表的宽度 Mysql限制每个表最多存储4096列,并且每一行数据的大小不能超过65535字节。...禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3...., 通常将1、2中的字段建立联合索引效果更好 多表join的关联列 ---- 如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少

    50210

    Mysql高性能优化规范建议

    并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换...所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为...尽量做到冷热数据分离,减小表的宽度 Mysql限制每个表最多存储4096列,并且每一行数据的大小不能超过65535字节。...禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3...., 通常将1、2中的字段建立联合索引效果更好 多表join的关联列 ---- 如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少

    1.1K30

    MySQL高性能优化规范建议,值得收藏

    MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)•数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符•临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以...所有表必须使用 Innodb 存储引擎 没有特殊要求(即 Innodb 无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用 Innodb 存储引擎(MySQL5.5 之前默认使用 Myisam...6.尽量做到冷热数据分离,减小表的宽度 MySQL 限制每个表最多存储 4096 列,并且每一行数据的大小不能超过 65535 字节。...禁止给表中的每一列都建立单独的索引 5.6 版本之前,一个 sql 只能使用到一个表中的一个索引,5.6 以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3...., 通常将 1、2 中的字段建立联合索引效果更好•多表 join 的关联列 ---- 5.如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机 IO,增加查询性能 ,索引能过滤出越少的数据

    1.2K41

    关于Mysql高性能优化规范的一点建议

    ,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换...所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为...尽量做到冷热数据分离,减小表的宽度 Mysql限制每个表最多存储4096列,并且每一行数据的大小不能超过65535字节。...禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3...., 通常将1、2中的字段建立联合索引效果更好 多表join的关联列 ---- 如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少

    1K20

    值得收藏:一份非常完整的 MySQL 规范

    ,并且最后不要超过32个字符 · 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 · 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换...IO) 更有效的利用缓存,避免读入无用的冷数据 经常一起使用的列放到一个表中(避免更多的关联操作) 7、禁止在表中建立预留字段 预留字段的命名很难做到见名识义 预留字段无法确认存储的数据类型,所以无法选择合适的类型...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...,通常将1、2中的字段建立联合索引效果更好 · 多表join的关联列 六、如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少...12、禁止使用order by rand() 进行随机排序 会把表中所有符合条件的数据装载到内存中,然后在内存中对所有数据根据随机生成的值进行排序,并且可能会对每一行都生成一个随机值,如果满足条件的数据集非常大

    49030

    MySQL性能管理及架构设计

    io -> 降低磁盘效率 ②对DDL影响: 建立索引需要很长时间: MySQL -v建立索引会锁表 MySQL -v>=5.5 建立索引会造成主从延迟(mysql建立索引,先在组上执行,再在库上执行...可串行化(SERIALIZABLE)在读取的每一行数据上都加锁,会造成大量的锁超时和锁征用,严格数据一致性且没有并发是可使用。...2)如何为缓存池分配内存 Innodb_buffer_pool_size,定义了Innodb所使用缓存池的大小,对其性能十分重要,必须足够大,但是过大时,使得Innodb 关闭时候需要更多时间把脏页从缓冲池中刷新到磁盘中...对于列的值较长,比如BLOB、TEXT、VARCHAR,就必须建立前缀索引,即将值的前一部分作为索引。这样既可以节约空间,又可以提高查询效率。...语法: ALTER TABLE table_name ADD KEY(column_name(prefix_length)) 如何选择索引列的顺序: 经常会被使用到的列优先(选择性差的列不适合,如性别

    60630

    MySQL 高性能优化规范建议

    ,并且最后不要超过 32 个字符 临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以 bak_为前缀并以日期 (时间戳) 为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换...6.尽量做到冷热数据分离,减小表的宽度 MySQL 限制每个表最多存储 4096 列,并且每一行数据的大小不能超过 65535 字节。...同财务相关的金额类数据必须使用 decimal 类型 非精准浮点:float,double 精准浮点:decimal Decimal 类型为精准浮点数,在计算时不会丢失精度 占用空间由定义的宽度决定,每...禁止给表中的每一列都建立单独的索引 5.6 版本之前,一个 sql 只能使用到一个表中的一个索引,5.6 以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。 3...., 通常将 1、2 中的字段建立联合索引效果更好 多表 join 的关联列 ---- 5.如何选择索引列的顺序 建立索引的目的是:希望通过索引进行数据查找,减少随机 IO,增加查询性能 ,索引能过滤出越少的数据

    49410

    值得收藏:一份非常完整的MySQL规范

    ,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换...,会造成列上的索引失效,导致查询效率降低) 二、数据库基本设计规范 1、所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用...IO) 更有效的利用缓存,避免读入无用的冷数据 经常一起使用的列放到一个表中(避免更多的关联操作) 7、禁止在表中建立预留字段 预留字段的命名很难做到见名识义 预留字段无法确认存储的数据类型,所以无法选择合适的类型...2、禁止给表中的每一列都建立单独的索引 5.6版本之前,一个sql只能使用到一个表中的一个索引,5.6以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好 3、每个Innodb...12、禁止使用order by rand() 进行随机排序 会把表中所有符合条件的数据装载到内存中,然后在内存中对所有数据根据随机生成的值进行排序,并且可能会对每一行都生成一个随机值,如果满足条件的数据集非常大

    36920
    领券