MYSQL中經常使用的強迫性操作(例如強迫索引)。本站提示廣大學習愛好者:(MYSQL中經常使用的強迫性操作(例如強迫索引))文章只能為提供參考,不一定能成為您想要的結果。以下是MYSQL中經常使用的強迫性操作(例如強迫索引)正文
其他強迫操作,優先操作以下:
mysql經常使用的hint
關於常常應用oracle的同伙能夠曉得,oracle的hint功效品種許多,關於優化sql語句供給了許多辦法。異樣,在mysql裡,也有相似的hint功效。上面引見一些經常使用的。
強迫索引 FORCE INDEX
SELECT * FROM TABLE1 FORCE INDEX (FIELD1) …
以上的SQL語句只應用樹立在FIELD1上的索引,而不應用其它字段上的索引。
疏忽索引 IGNORE INDEX
SELECT * FROM TABLE1 IGNORE INDEX (FIELD1, FIELD2) …
在下面的SQL語句中,TABLE1表中FIELD1和FIELD2上的索引不被應用。
封閉查詢緩沖 SQL_NO_CACHE
SELECT SQL_NO_CACHE field1, field2 FROM TABLE1;
有一些SQL語句須要及時地查詢數據,或許其實不常常應用(能夠一天就履行一兩次),如許就須要把緩沖關了,不論這條SQL語句能否被履行過,辦事器都不會在緩沖區中查找,每次都邑履行它。
強迫查詢緩沖 SQL_CACHE
SELECT SQL_CALHE * FROM TABLE1;
假如在my.ini中的query_cache_type設成2,如許只要在應用了SQL_CACHE後,才應用查詢緩沖。
優先操作 HIGH_PRIORITY
HIGH_PRIORITY可使用在select和insert操作中,讓MYSQL曉得,這個操作優先輩行。
SELECT HIGH_PRIORITY * FROM TABLE1;
滯後操作 LOW_PRIORITY
LOW_PRIORITY可使用在insert和update操作中,讓mysql曉得,這個操作滯後。
update LOW_PRIORITY table1 set field1= where field1= …
延時拔出 INSERT DELAYED
INSERT DELAYED INTO table1 set field1= …
INSERT DELAYED INTO,是客戶端提交數據給MySQL,MySQL前往OK狀況給客戶端。而這是其實不是曾經將數據拔出表,而是存儲在內存外面期待列隊。當mysql有空余時,再拔出。另外一個主要的利益是,來自很多客戶真個拔出被集中在一路,並被編寫入一個塊。這比履行很多自力的拔出要快許多。害處是,不克不及前往主動遞增的ID,和體系瓦解時,MySQL還沒有來得及拔出數據的話,這些數據將會喪失。
強迫銜接次序 STRAIGHT_JOIN
SELECT TABLE1.FIELD1, TABLE2.FIELD2 FROM TABLE1 STRAIGHT_JOIN TABLE2 WHERE …
由下面的SQL語句可知,經由過程STRAIGHT_JOIN強制MySQL按TABLE1、TABLE2的次序銜接表。假如你以為按本身的次序比MySQL推舉的次序停止銜接的效力高的話,便可以經由過程STRAIGHT_JOIN來肯定銜接次序。
強迫應用暫時表 SQL_BUFFER_RESULT
SELECT SQL_BUFFER_RESULT * FROM TABLE1 WHERE …
當我們查詢的成果集中的數據比擬多時,可以經由過程SQL_BUFFER_RESULT.選項強迫將成果集放莅臨時表中,如許便可以很快地釋放MySQL的表鎖(如許其它的SQL語句便可以對這些記載停止查詢了),而且可以長時光地為客戶端供給年夜記載集。
分組應用暫時表 SQL_BIG_RESULT和SQL_SMALL_RESULT
SELECT SQL_BUFFER_RESULT FIELD1, COUNT(*) FROM TABLE1 GROUP BY FIELD1;
普通用於分組或DISTINCT症結字,這個選項告訴MySQL,假如有需要,就將查詢成果放莅臨時表中,乃至在暫時表中停止排序。SQL_SMALL_RESULT比起SQL_BIG_RESULT差不多,很少應用。