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 但是你位置放錯了。...