`

在Mysql5下使用Hash分区时排序的怪异现象

SQL 
阅读更多

有一数据表,ID字段,主键和自增量属性,同时做为Hash分区字段,使用InnoDB引擎。

SQL:SELECT * FROM tab WHERE userID = ? ORDER BY?ID DESC

但返回的记录列表如下:

ID,title
124322,a111
124311,a222
5321,a333
15324,a444
15321,a55
1234,a66

由此可以看到返回的记录集并没有真正以ID排序,而之前没有使用分区,并使用MYISAM引擎的时候并没有这个情况,

由于使用主键字段作为分区字段,同时Mysql5在分区的时候并没有全局索引,只有每个分区单独的索引。所以估计这个SQL只是返回各自分区排序后的结果,然后做union就直接返回了。

最后改为:

SQL:SELECT * FROM tab WHERE userID = ? ORDER BY?ID + 0?DESC


[点击查看详细]
分享到:
评论

相关推荐

    oracle分区表之hash分区表的使用及扩展

    而使用Hash分区,相同的股票ID会落在同一分区,提高了查询效率,尤其是当数据按ID聚集时,可以减少I/O操作,因为相同ID的数据更可能存储在同一数据块内。 然而,单纯依赖Hash分区来大幅降低I/O并不现实,特别是在...

    mysql表分区

    创建分区表时,需要在创建表语句中使用 PARTITION BY 子句,并指定分区的类型和规则。分区的创建、修改和删除操作可以通过ALTER TABLE语句来执行。例如,可以先使用DROP TABLE IF EXISTS语句来删除已存在的分区表,...

    mysql_hash.exe/使用hash登陆mysql

    在获取到mysql用户的hash后, 可用hash直接登陆mysql进行操作 比如我们注入出数据库的hash,但是没办法拿到webshell 我们可以使用mysql_hash,用hash登陆并控制数据库 使用方法: mysql_hash.exe -u root -p Enter ...

    创建mysql表分区的方法

    本文将详细介绍MySQL表分区的原理、优势以及如何创建和使用分区。 **表分区的优势** 1. **存储优化**:分区可以存储更多数据,且可跨多个磁盘分布,提高存储容量。 2. **数据清理**:通过删除特定分区,可以快速...

    MySQL分区分表方案实践手册

    具体实现时,可以通过计算某一列的值或多个列的组合值来确定数据行应放置在哪一个分区中。例如,可以基于员工编号的哈希值来进行分区。 以上就是MySQL分区的基础知识及其常见应用场景。通过合理地利用MySQL的分区...

    HASH分区表增加新的分区的一点研究.doc

    在Oracle数据库中,哈希(HASH)分区是一种有效的数据存储策略,它通过计算分区键的哈希值来决定数据应存储在哪个分区中。哈希分区表在处理大量数据时可以提供良好的查询性能,因为它们能够均匀地分散数据,使得查询...

    MySQL 5.5.8 分区表性能测试

    压缩包中的“count.xls”文件可能是测试结果的记录,可能包含了在不同场景下对MySQL 5.5.8分区表性能的具体测试数据,例如查询时间、CPU使用率、内存消耗等指标。通过分析这些数据,我们可以深入了解分区表在实际...

    mysql分库分表分区1

    在示例中,没有具体的 `HASH` 分区例子,但一般来说,可以使用如 `PARTITION BY HASH(COLUMN_NAME) PARTITIONS 4` 这样的语法,其中 `COLUMN_NAME` 是用于计算哈希值的列,`PARTITIONS 4` 指定了分区的数量。...

    mysql分区.pdf

    MyISAM分区在创建时需要注意分区的规则,因为分区表中的所有索引都必须是全局索引。 创建分区的SQL语法通常包括`CREATE TABLE`语句,后面跟分区类型和分区表达式。例如,一个使用HASH分区的表可以这样创建: ```...

    mysql分区文档

    MySQL 分区是数据库管理系统中的一种优化策略,它将大型表的数据分布在不同的物理存储上,以提高查询性能和便于管理大量数据。分区的本质是将一张大表逻辑上分成多个部分,但用户在操作时仍然将其视为单个表。MySQL ...

    MYSQL 通过分区(Partition)提升MySQL性能

    - **Key分区**:类似于Hash分区,但使用的哈希函数是由MySQL系统提供的。 - **List分区**:根据列值列表进行分区,每个分区对应列表中的一个或多个值。 - **Composite分区**:结合以上两种或多种分区方法。 #### ...

    MySQL的表分区详解

    然而,值得注意的是,尽管MySQL分区提供了许多优势,但在实际应用中,需要根据具体业务需求和查询模式来决定是否使用分区,以及如何设计分区策略。在创建分区表后,可以通过调整分区方案来优化常见查询的性能。此外...

    mysql如何进行分区-mysql分区有哪些方法.pdf

    针对大规模数据存储,MySQL 提供了一种高效的管理策略——分区(Partitioning),这有助于提高查询性能,尤其是在处理海量数据时。分区是将一个大表划分为逻辑上独立的部分,每个部分(或称为分区)可以在物理上分散...

    mysql如何进行分区-mysql分区有哪些方法.docx

    使用分区能有效管理和优化大数据量的表,但需要根据具体的应用场景和需求来选择合适的分区策略,同时也要考虑到对应用程序可能产生的影响。在设计分区方案时,要充分考虑数据分布特性、查询模式以及未来可能的扩展性...

    mysql-存储分区-实验八.docx

    - 在使用Hash分区时,如果字段包含非支持的数据类型(如几何坐标),会导致错误。解决办法是更改存储引擎或删除不兼容的字段。 4. **心得与总结**: 通过实验,对MySQL的存储分区有了深入的理解,包括如何创建、...

    geohash算法mysql版代码

    网上有很多geohash算法的实现,都是基于java或者php代码实现的,没有sql实现的版本,这里使用mysql简单实现了这个算法

    Hash在线解密_Hash在线解密_Hash在线解密平台最新版_hash解密_hash.txt_mysql5在线解密_

    Hash在线解密平台最新版php实现纯txt存储哈希跟明文对应表查询

    详细介绍Mysql5.1分区技术

    详细介绍mysql5.1 分区技术,通过对list range hash key四种分区技术的举例阐述Mysql分区,18.2.1. RANGE分区 18.2.2. LIST分区 18.2.3. HASH分区 18.2.4. KEY分区 18.2.5. 子分区 18.2.6. MySQL分区处理NULL值的...

Global site tag (gtag.js) - Google Analytics