mysql增加排序效能差很多怎麼優化

時間 2022-04-09 23:05:05

1樓:珍珍

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;

2樓:

在排序欄位上建立索引

3樓:那年0零落憂傷

可以在排序欄位上加上索引,然後用explain來測試下加索引前跟加索引之後的效能

mysql中怎樣對大批量級的資料查詢進行優化

4樓:考拉的小小鋪

複雜的工程,1.優化本身的sql,2.分表,橫向縱向

mysql資料庫有100萬+資料,查詢起來很慢了,如何優化

5樓:

你好,你可以根據條件去新增索引,例如:

一、所有mysql索引列型別都可以被索引,對來相關類使用索引可以提高select查詢效能,根據mysql索引數,可以是最大索引與最小索引,每種儲存引擎對每個表的至少支援16的索引。總索引長度為256位元組。

mysim和innodb儲存引擎的表預設建立索引都是btree索引,目前mysql還不支援函式索引,但支援前緣索引,對欄位前n個字元建立索引

二、mysql建立索引語法

create [unioun|fulltext|spatial] index indexname[using indextype] on tablename( tablenamecol)

index_col_name:

col_name[ (length)][asc |desc]

如果你建立索引時搞錯了,需要修改mysql索引我們可以用alert來修改索引,語法與create index建立索引差不多,我們就不說了,可以檢視相關手冊。

下面我們來看一個關於mysql建立索引例項教程。

mysql>create index cityname on city(city(2));

query ok,600 rows affected (0.26 sec)

records :600 duplicates:0 warings 0:

我們現在來以city為條件進行查詢,如下面。

->explain select * from city where city ='www.111cn.net' g

id:1

......

possible_keys:cityname

key:cityname

好了,現在我們來看看mysql刪除索引等例項

drop indexname on tablename

例項,我現在要刪除剛才建立city索引

>drop index cityname on city;

query ok, .....

不過通常對百萬級資料的查詢或者其他操作,都改換其他的大型的資料庫了,希望能幫到你,望採納。

怎麼優化mysql中文排序語句

mysql編碼問題,mysql編碼問題

看你的描述 應該是沒有把以前的表刪掉重建 就是我說的第四部 你看看下面步驟吧 首先把mysql的服務停掉 在執行視窗輸入 net stop mysql 把伺服器和客戶端的字符集改成自己想用的字符集 gb2312或是utf8等 具體操作為 開啟mysql安裝目錄下的my.ini 找到default c...

怎麼刪除mysql使用者,mysql怎麼刪除賬戶

刪除使用者 mysql uroot p 密碼 mysql delete from user where user test andhost localhost mysql flush privileges mysql drop database testdb 刪除使用者的資料庫 刪除賬戶及許可權 d...

MySQL讀取中文資料的問題,在MySQL的命令列介面是可以

很明顯是編碼問題 要想不出現亂碼 請確保 如下幾個地方編碼相同。拿gb2312來說 1 你的資料庫編碼為gb2312.2 你的資料庫連線為gb2312.3 你的php檔案,html檔案編碼是gb2312 看了你的php 你用到了 db query set names gb2312 但是你位置放錯了。...