`

order by后面主键,走主键索引,不走where后面字段索引

 
阅读更多



order by后面主键,走主键索引,不走where后面字段索引,导致速度很慢,原因:

优化器认为排序是比较耗时的操作,而走索引是不会有额外的操作、且索引是有序的,因此选择了主键索引。

 

~~~~~~~~~~~~~~~~~~~~~

只有,where后面字段都在索引里,才走该索引。

 ~~~~~~~~~~~~~

就算where+order by 字段和组合索引字段一致,也不走该索引,只认where后面的。(allocateid,同时匹配到单一索引和符合索引,默认走单一索引)



 

 

 

 

单一索引

复合索引



 

  • 大小: 26.3 KB
  • 大小: 24.6 KB
  • 大小: 25.4 KB
  • 大小: 16.7 KB
  • 大小: 18.3 KB
分享到:
评论

相关推荐

    行业-70 针对主键之外的字段建立的二级索引,又是如何运作的?l.rar

    3. **排序优化**:索引字段可以用于ORDER BY子句,使结果集按指定字段值排序,提高排序效率。 4. **唯一性约束**:非主键字段可以设置唯一索引,确保该字段的值在整个表中不重复。 然而,二级索引并非总是有利无弊...

    【MySQL】经验:索引使用场景

    一、适合用索引的场景 ...这里要注意,order by的字段出现在where条件中才能使用索引,否则索引失效。 5、查询中的统计、分组字段 group by和union也属于需要排序的操作,这里也要注意字段出现在whe

    在sql中不指定Order by排序是按照主键吗

    在sql中不指定Order by,排序是按照主键吗?...所以得出结论:在不指定Order by的情况下,sqlserver会根据执行计划实际查询方式来得到数据,而执行计划会根据sql中很多的因素(的查询列,where条件,order

    mysql查询优化之索引优化

    - **选择合适的索引列**:索引应该建在经常出现在WHERE子句、JOIN条件和ORDER BY子句中的列上。 - **避免过度索引**:过多的索引会增加写操作的开销,因此需要权衡读写性能。 - **复合索引**:如果一个查询涉及多...

    覆盖索引及案例

    通常来说,这些字段包括`WHERE`子句中的条件字段、`SELECT`列表中的返回字段以及`ORDER BY`或`DISTINCT`后的字段。 2. **选择合适的字段顺序**: - 字段的顺序对于索引的性能至关重要。通常将过滤条件字段作为索引...

    SQL常见命令及使用方法

    - `SELECT * FROM 表名 WHERE 字段名 = 字段值 ORDER BY 字段名 [DESC]`:此语句用于从指定的表中选择所有列,并根据给定的条件筛选记录。`WHERE`子句用于指定筛选条件,`ORDER BY`则用来对结果进行排序。 - 示例...

    mysql数据库以及索引详解.pptx

    - **主键索引**:基于主键建立的索引,不允许重复且不能为空。 - **唯一索引**:索引列的值必须是唯一的,但允许空值。 - **普通索引**:用表中的任意列构建的索引,无特殊限制。 - **全文索引**:适用于搜索大文本...

    05深入浅出索引(下).pptx

    对于`SELECT * FROM geek WHERE c=N ORDER BY a LIMIT 1`和`SELECT * FROM geek WHERE c=N ORDER BY b LIMIT 1`的查询,虽然`c`索引可以快速定位到`c`值,但为了满足`ORDER BY`和`LIMIT`,仍然需要回表并排序,这...

    Mysql索引优化案例.pdf

    当分页查询需要根据非主键字段进行排序时,可能会遇到索引不被使用的问题。例如: ```sql SELECT * FROM employees ORDER BY name LIMIT 90000, 5; ``` 由于排序字段`name`没有建立索引,上述查询可能导致MySQL...

    mysql高性能索引查询(查询性能问题、索引使用原则、索引创建、索引的优点缺点).docx

    - **加速排序**:对于ORDER BY等操作,索引可以帮助加速排序过程。 - **减少磁盘I/O操作**:索引可以减少磁盘I/O操作次数,提高查询速度。 ##### 2、索引的缺点 - **占用额外空间**:每个索引都需要占用一定的磁盘...

    索引的优点和缺点

    - **索引类型**:根据索引的用途和结构,可以分为不同的类型,如主键索引、唯一索引、复合索引等。 - **索引选择性**:一个好的索引应该能够区分尽可能多的记录,即具有较高的选择性。 - **索引维护**:索引需要定期...

    mysql添加索引.pdf

    因此,在设计数据库时,应谨慎选择需要索引的列,通常关注那些出现在JOIN条件、WHERE子句、GROUP BY或ORDER BY中的列。同时,定期监控和评估索引的性能,通过`ANALYZE TABLE`或`OPTIMIZE TABLE`命令进行调整,以保持...

    数据库索引

    SELECT * FROM buy_log FORCE INDEX (user_id) WHERE user_id = 1 ORDER BY buy_date LIMIT 3; ``` 如果使用`user_id`索引,执行计划中可能会出现`using filesort`提示,表示需要额外的排序操作。但如果使用组合索引...

    SQLServer索引调优实践

    SELECT * FROM Table1 WHERE Data1 = 2 ORDER BY DTAt DESC; ``` 假设执行后得到的结果如下: ``` Table 'Table1'. Scan count 1, logical reads 911, physical reads 0, read-ahead reads 0, lob logical reads 0...

    MySQL如何选择合适的索引

    SELECT * FROM employees WHERE name > 'a' ORDER BY position; SELECT * FROM information_schema.OPTIMIZER_TRACE; ``` optimizer_trace会提供详细步骤,包括条件处理、表依赖和引用优化关键使用等信息,帮助我们...

    SQLServer索引设计和调优技巧大全.pdf

    选择那些经常出现在JOIN、WHERE、ORDER BY、GROUP BY等SQL子句中的字段作为索引字段。 - 对于小表,尤其是查找表,使用索引可能反而降低性能,直接扫描表可能更快。 4. **多字段索引**: - 多字段索引适用于那些...

    SQL索引一步到位1

    - 经常用于排序(ORDER BY)、分组(GROUP BY)或过滤(WHERE子句)的列应该创建索引。 - 数据列的更新频率高或值变化大的列不适合建立索引,因为这会增加索引维护的成本。 - 文本、图像和位类型的数据列以及重复值...

Global site tag (gtag.js) - Google Analytics