sql查詢小記

2021-07-02 20:58:02 字數 1975 閱讀 2455

1、在mysql中判斷某個字段是否為空需要使用is null 或者 is not null 在mysql5.2.7中測試通過。

例子1:

select  *from test where code is null

例子2:

select  * from test where code is not null

2、select column_name(s) from table_name order by column_name desc

mysql order by根據兩列進行分類

select column_name(s) from table_name order by column_name1, column_name2

通過索引優化來實現mysql的order by語句優化:

1、order by的索引優化。如果乙個sql語句形如:

select [column1],[column2],…. from [table] order by [sort];

在[sort]這個欄位上建立索引就可以實現利用索引進行order by 優化。

2、where + order by的索引優化,形如:

select [column1],[column2],…. from [table] where [columnx] = [value] order by [sort];

建立乙個聯合索引(columnx,sort)來實現order by 優化。

注意:如果columnx對應多個值,如下面語句就無法利用索引來實現order by的優化

select [column1],[column2],…. from [table] where [columnx] in ([value1],[value2],…) order by[sort];

3、where+ 多個欄位order by

select * from [table] where uid=1 order x,y limit 0,10;

建立索引(uid,x,y)實現order by的優化,比建立(x,y,uid)索引效果要好得多。

mysql order by不能使用索引來優化排序的情況

* 對不同的索引鍵做 order by :(key1,key2分別建立索引)

select * from t1 order by key1, key2;

* 在非連續的索引鍵部分上做 order by:(key_part1,key_part2建立聯合索引;key2建立索引)

select * from t1 where key2=constant order by key_part2;

* 同時使用了 asc 和 desc:(key_part1,key_part2建立聯合索引)

**如下     複製**

select * from t1 order by key_part1 desc, key_part2 asc;

* 用於搜尋記錄的索引鍵和做 order by 的不是同乙個:(key1,key2分別建立索引)

**如下     複製**

select * from t1 where key2=constant order by key1;

* 如果在where和order by的字段上應用表示式(函式)時,則無法利用索引來實現order by的優化

select * from t1 order by year(logindate) limit 0,10;

>mysql一次查詢只能使用乙個索引。如果要對多個字段使用索引,建立復合索引。

>越小的資料型別通常更好:越小的資料型別通常在磁碟、記憶體和cpu快取中都需要更少的空間,處理起來更快。

>盡量避免null:應該指定列為not null,除非你想儲存null。在mysql中,含有空值的列很難進行查詢優化,因為它們使得索引、索引的統計資訊以及比較運算更加複雜。你應該用0、乙個特殊的值或者乙個空串代替空值。

>在order by操作中,mysql只有在排序條件不是乙個查詢條件表示式的情況下才使用索引。

sql游標小記

游標優點 游標允許應用程式對查詢語句select 返回的行結果集中每一行進行相同或不同的操作,而不是一次對整個結果集進行同一種操作 它還提供對基於游標位置而對錶中資料進行刪除或更新的能力 缺點 處理大資料量時,效率低下,占用記憶體大 一般來說,能使用其他方式處理資料時,最好不要使用游標,除非是當你使...

sql連線小記

1.select from t1,t2 這個查詢將會產生笛卡爾積的結果,如果有where子句的話也會先產生一張笛卡爾積的表然後再篩選結果 2.select from t1 inner join t2 on t1.id t2.id 這個查詢會將兩張表都有匹配項才有結果產生 3.select from ...

SQL函式小記

寫一篇筆記,記錄一下常見的sql函式,以備之後的查詢需要。abs num 絕對值函式 mod 被除數,除數 求餘函式 round num,保留小數的位數 四捨五入函式concat str1,str2 拼接字串函式 length str 字串長度 lower str upper str 小 大寫函式 ...