MariaDB進行錶子查詢存在的問題

2021-09-30 01:40:05 字數 373 閱讀 6451

mysql與mariadb對巢狀的查詢語句當中的order by的處理方法不同。mysql會忠實執行內層查詢的排序子句,但是mariadb會將這個order by去掉,理論依據就是關係理論 --- 乙個表是行的集合,因此沒有順序要求。由於巢狀的查詢語句是外層查詢的資料表,因此可以以任何順序提供給外層查詢。如果在內層查詢語句中不僅有order by,還有limit子句,那麼這時這個order by是不會被mariadb忽略的,因為此時的行的順序會決定哪些行會返回給外層查詢。

後來我試驗了一下,改sql語句,把原來的子查詢中存在order by的放到外面,也就是讓order by起作用,結果乙個db2執行幾秒的sql語句,mariadb居然執行了

12分鐘!12分鐘!12分鐘。 我該建的索引都建了。

mysql查詢表是否存在

show databases select from information schema.tables where table schema 或者是 show tables 或者是 show tables like table name 可用來判斷表是否存在 database name 是指資料庫...

子查詢合併表

這種方法適用於2個表之間沒有欄位有聯絡,只是按已排列的順序合在一起,下面的方法是不用臨時錶用子查詢實現的方法,該方法不適用於處理大量行。它適用於處理幾百行。對於大型表,一定要使用索引以避免進行大範圍的搜尋。create table tb1 id int identity 1,1 primary ke...

SQL查詢存在A表但不存在B表的資料

其中b表的b id欄位引用了a表的id欄位。現在有個查詢需求 給出已知的a表中的id,比如 id in 1,2,3 找出這些id在b表中沒有與之對應的記錄。比如說上面a表中的id 3這條記錄,b表中沒有b id與之對應 方式一.利用子查詢 select a.id from a a where a.i...