比较复杂的查询,执行多次, 结果顺序不一致.
语句如下:
SELECT DISTINCT a.id AS id, c.id as cid, c.p a.guid AS guid, a.channelId, a.contentType, a.catchup, a.ovpContentId AS ovpContentId, a.rating AS rating, a.state AS state, a.releaseYear AS releaseYear, a.publishDate AS publishDate, a.expiryDate AS expiryDate, a.startTime AS startTime, a.endTime AS endTime, a.restriction AS restriction, a.hitCount AS hitCount, a.operator AS operator, c.sequence AS sequence, a.createTime AS createTime, a.updateTime AS updateTime, a.status AS status, a.contentType AS contentType, a.channelId AS channelId, a.catchup AS catchup, a.episode AS episode, a.episodeGroup AS episodeGroup, (SELECT ifnull(count(*), 0) FROM product_content pc WHERE pc.productId = -1 AND pc.contentId = a.id) AS signAnonymous FROM content a, content_properties b, category_content c WHERE a.id = b.contentId AND b.lang = 'en-gb' AND a.contentType = 'vod' AND a.state = 'completed' AND (a.episode IS NULL OR a.episode = 0) AND a.status = 0 AND a.publishDate <= now() AND a.expiryDate >= now() AND a.id IN (SELECT DISTINCT pc.contentId FROM product_content pc, product p WHERE pc.productId = p.id AND p.state = 'reviewed' AND p.status = 0 AND p.publishDate <= now() AND p.expiryDate >= now() AND pc.status = 0) AND a.id = c.contentId AND c.categoryId = 9 ORDER BY c.sequence IS NOT NULL, c.sequence DESC, c.pinTime DESC LIMIT 1, 10
排序情况:
ORDER BY c.sequence IS NOT NULL, c.sequence DESC, c.pinTime DESC
个人理解: 先sequence 不为空排序, 然后以sequence 倒序排序, 再以pinTime排序.
查询记录中,sequence 大小相等, pinTime 都是null.
所以其实order by sequence无效. 不知为什么查询结果不一致?
通过explaion, 结果如下:
注: 本查询是,通过java程序调用, 从控制台,打印出Id发现顺序不一致. 通过mysql客户端 直接执行sql 未发现结果不一致.
问题: 在mysql中, 同一sql,是否会出现查询结果顺序不一致情况?
耗费将近一下午,在google 上,未找到此方面的知识,不知各位前辈是否遇到过次种问题.
相关推荐
通过合理设计嵌套查询,可以对查询结果进行进一步的筛选,提高查询的精确度。 此外,查询优化还涉及对SQL查询语句进行重写,以利用数据库系统的优化器。有时,同一逻辑的查询可以通过不同的SQL语句来实现,但不同的...
这些技术通常提供API接口,将数据库查询结果转化为JSON格式,供前端渲染。 总的来说,递归查询菜单树是数据库操作的一个常见应用场景,它涉及到数据库设计、SQL查询技巧以及前后端的数据交换。理解并掌握这些知识点...
6. **无效常数表达式的早期检测**:MySQL能快速识别并忽略不可能返回结果的SELECT语句,节省资源。 7. **WHERE与HAVING的合并**:如果不使用GROUP BY或分组函数,HAVING子句的行为与WHERE子句相同,可以合并使用。 ...
2. **=和IN可以乱序**:如果查询条件中有`=`和`IN`操作符,则可以改变它们的顺序而不影响索引的使用。 3. **尽量选择区分度高的列作为索引**:索引列应当尽可能唯一,以提高查询效率。 4. **索引列不能参与计算**:...
主要包括SIMPLE(简单的SELECT查询)、PRIMARY(包含子查询的外部查询)、SUBQUERY(子查询)、DEPENDENT SUBQUERY(依赖外部查询结果的子查询)等。 通过以上详细介绍,我们可以看出索引和执行计划对于提高MySQL...
窗口函数(Window Functions)是MySQL的一个高级特性,它们允许我们在一个结果集的“窗口”上执行计算,而不只是当前行。例如,LEAD()和LAG()函数可以用来访问相邻行的值,RANK()和ROW_NUMBER()可以为每行分配唯一的...
这意味着,数据记录的物理顺序和主键逻辑顺序是一致的,因此基于主键的查询非常快速高效。聚簇索引的结构要求每个表只能有一个聚簇索引。 2PL(Two-Phase Locking,二阶段锁)是一种事务控制机制。在InnoDB存储引擎...
- **解决方法**:设置超时机制、优化SQL语句顺序、使用死锁检测工具。 **6.4.1 常见的解决死锁的方法** - 设置事务的隔离级别。 - 调整SQL语句执行顺序。 **6.4.2 数据库的乐观锁和悲观锁是什么?怎么实现的?** -...
MySQL游标是数据库管理系统中用于遍历查询结果集的一种机制,尤其在处理大量数据或进行迭代操作时,游标显得尤为重要。这篇博文可能是探讨如何在MySQL中使用游标,特别是当游标执行到最后一行后如何正确地结束循环。...
不可重复读是指在同一事务中,两次执行相同的查询可能会得到不同的结果,因为其他事务在这期间插入或更新了数据。幻读是指在查询期间,事务可以读到其他事务插入的新行,即使这些行满足相同的搜索条件。 3. **可...
常见的优化方法包括避免select *,使用连接来代替子查询,拆分大的delete或insert语句,使用limit对查询结果的记录进行限定,使用exists代替in,使用where子句替换having子句,等等。 11. 表结构优化 表结构优化是...
- **EXTENDED形式**:`EXPLAIN EXTENDED SELECT ...`,此形式会显示出经过MySQL优化器优化后的查询语句,可以通过`SHOW WARNINGS`查看。 - **PARTITIONS形式**:`EXPLAIN PARTITIONS SELECT ...`,适用于分区表,...
MySQL能够快速识别并处理某些不可能返回结果的SELECT语句,从而避免了不必要的资源消耗。 #### 4. WHERE与HAVING子句的优化 - **HAVING与WHERE的合并**:如果不使用GROUP BY或分组函数(如COUNT()),HAVING子句...
总结,`mysql_fetch_array()`和`mysql_fetch_row()`是PHP中处理MySQL查询结果的重要工具,帮助开发者从数据库中提取和显示数据。虽然`mysql_`系列函数已经过时,但理解其工作原理对于初学者仍然非常有益。在实际开发...
* 最左匹配原则:在创建复合索引时,需要关注查询 SQL 条件的顺序,确保最左匹配原则有效,同时可以删除不必要的冗余索引。 五、锁机制 * 锁机制:为了保证访问的次序,防止数据的不一致。 * 锁机制可以防止多个...
15. `query_cache_size`和`query_cache_limit`:定义了查询缓存的大小和单个查询结果的最大值,提高重复查询的响应速度。 16. `ft_min_word_len`:全文检索时最小的索引词长度。 17. `default-storage-engine`:...
不可重复读则是在同一事务内多次读取同一数据,结果不同。 13. `tmp_table_size`优化 临时表大小设置不当可能导致内存溢出,影响性能。根据系统资源和查询需求,适当调整`tmp_table_size`和`max_heap_table_size`...
#MySQL的查询缓冲大小(从4.0.1开始,MySQL提供了查询缓冲机制)使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中, # 今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户...
幻读是指在一个事务的两次查询中数据笔数不一致, 例如有一个事务查询了几列(Row)数据, 而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中, 就会发现有几列数据是它先前所没有的。 8. 视图的...