索引失效的场景: 1.没有 where 条件 直接看 SQL 语句 2.where 条件中所在的列没有建立索引 show index from t; 3.从表中取得数据超过某个阈值.通常认为是 20~30%,即使 where 条件和索引都满足,也不会走索引 看表的行数.看下索引列的 cardinality 值,card 值只能直观反映 = 操作符返回的行数. 对于>=.<=.like.between and 的情况,card 值不能直观判断返回值的数据量. 有时候可以尝试着执行一下,但…
语法:alter_specification: ADD [COLUMN] create_definition [FIRST | AFTER column_name ] or ADD INDEX [index_name] (index_col_name,...) or ADD PRIMARY KEY (index_col_name,...) or ADD UNIQUE [index_name] (index_col_name,...) or ALTER [COLUMN] col_name {SET…
是什么 索引用于快速的查询某些特殊列的某些行.如果没有索引, MySQL 必须从第一行开始,然后通过搜索整个表来查询有关的行.表越大,查询的成本越大.如果表有了索引的话,那么 MySQL 可以很快的确定数据的位置,而不用查询整个表格.这比顺序的读取每一行要快的多.索引就像我们查字典时的目录一样,我们通过查询字典的目录,可以定位到某一行数据. 大多数的 MySQL 的索引(主键索引,唯一索引,普通索引,全文索引)都是 B-trees 结构.例外的情况有:在空间数据类型使用 R-trees 结构.…