MySQL 預設排序是什麼

来源:https://www.cnblogs.com/liran123/archive/2020/06/10/13084632.html
-Advertisement-
Play Games

最近在優化分頁查詢時,有一個問題:查詢不同列,分頁出來得數據不一樣。先看一下這個現象 表結構: CREATE TABLE `t_attach` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `fname` varchar(100) NOT NULL ...


最近在優化分頁查詢時,有一個問題:查詢不同列,分頁出來得數據不一樣。先看一下這個現象

表結構:

CREATE TABLE `t_attach` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `fname` varchar(100) NOT NULL DEFAULT '',
  `ftype` varchar(50) DEFAULT '',
  `fkey` text NOT NULL,
  `authorId` int(10) DEFAULT NULL,
  `created` int(10) NOT NULL,
  `hash` varchar(255) DEFAULT NULL,
  `web_url` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fname` (`fname`) USING BTREE,
  KEY `created` (`created`) USING BTREE,
  KEY `web_url` (`web_url`) USING BTREE,
  KEY `authorId` (`authorId`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=323466 DEFAULT CHARSET=utf8;

這裡面,有幾個列建立了索引

看一下查詢語句

 

 SELECT  * FROM  t_attach LIMIT 10,10;    
 SELECT id,fname FROM t_attach   LIMIT 10,10;
 SELECT id FROM  t_attach    LIMIT 10,10

 

 

 

 

 

 

 

 

 好奇怪,居然查詢到的數據不是一致的。想了好久,應該是mysql排序的方式不一致導致的。

接著執行了一下EXPLAIN 分析一下看看

 EXPLAIN SELECT  * FROM  t_attach LIMIT 10,10;    
 EXPLAIN SELECT id,fname FROM t_attach   LIMIT 10,10;
 EXPLAIN SELECT id FROM  t_attach    LIMIT 10,10

 

 

 ②

 

 

 居然用到的key不一樣,類似的情況也可以看下

MySQL 預設排序真的是按主鍵來排序的嗎

可以看出,mysql在不給定order by條件的時候,得到的數據結果的順序是跟查詢列有關的。

因為在不同的查詢列的時候,可能會使用到不同的索引條件。

Mysql在使用不同索引的時候,得到的數據順序是不一樣的。

這個可能就跟Mysql的索引建立機制,以及索引的使用有關了。

可以參考這個看看。

SQL 語句的查詢結果的的順序是由哪些因素決定?

為了避免這種情況,在以後的項目中,切記要加上order by

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、檢查 Linux 上是有存在 docker [root@localhost bin]# docker version 不存在 docker 時,可以使用如下命令下載 docker [root@localhost local]# yum -y install docker 在使用 docker 版 ...
  • 所有知識體系文章,GitHub已收錄,歡迎Star!再次感謝,願你早日進入大廠! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual MySQL存儲過程 一、存儲過程 1.1 什麼是存儲過程 存儲過程(Stored Procedure ...
  • 複製和故障轉移 Redis集群中的節點分為主節點(master)和從節點(slave),其中主節點用於處理槽,而從節點則用於複製某個主節點,併在被覆制 的主節點下線時,代替下線主節點繼續處理命令請求。 設置從節點:CLUSTER REPLICATE < node_id >可以讓接收命令的節點稱為no ...
  • 在SQL Server中,普通的表值函數(table-valued function)是可以使用表提示(Hints-Table)的,那麼CLR類型的表值函數(table-valued function)是否也可以使用表提示(Hints-Table)呢? 相信很多人都沒有留意過這個問題。 下麵我以Yo... ...
  • 宜未雨而綢繆,毋臨渴而掘井 說說MySQL的事務 資料庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 一個資料庫事務通常包含對資料庫進行讀或寫的一個操作序列。它的存在包含有以下兩個目的: 為資料庫提供一個從失敗恢復正 ...
  • 說明: <> 中的內容是自己定義的內容 [] 中的內容是可以省略的 field 包含欄位名和數據類型,field_name 僅指欄位名 table_name 指表名 position 指欄位位置,可取值:FIRST、AFTER <field> 修改表名 -- 修改數據表名稱。 -- old_tabl ...
  • 桔妹導讀:滴滴HBase團隊日前完成了0.98版本 → 1.4.8版本滾動升級,用戶無感知。新版本為我們帶來了豐富的新特性,在性能、穩定性與易用性方便也均有很大提升。我們將整個升級過程中面臨的挑戰、進行的思考以及解決的問題總結成文,希望對大家有所幫助。 1. 背景 目前HBase服務在我司共有國內、 ...
  • 一:背景 1. 講故事 上一篇說了mysql的架構圖,很多同學反饋說不過癮,畢竟還是聽我講故事,那這篇就來說一說怎麼利用visual studio 對 mysql進行源碼級調試,畢竟源碼面前,不談隱私,聖人面前,皆為螻蟻。 二:工具合集 mysql是C++寫的,要想在windows上編譯,還需要下載 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...