若天明 发表于 2015-1-16 20:12:24

MYSQL教程之mysql force Index 强迫索引

这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。其他强迫操纵,优先操纵以下:
MySQL经常使用的hint
关于常常利用Oracle的伴侣大概晓得,oracle的hint功效品种良多,关于优化sql语句供应了良多办法。一样,在mysql里,也有相似的hint功效。上面先容一些经常使用的。
强迫索引FORCEINDEX
SELECT*FROMTABLE1FORCEINDEX(FIELD1)…
以上的SQL语句只利用创建在FIELD1上的索引,而不利用别的字段上的索引。
疏忽索引IGNOREINDEX
SELECT*FROMTABLE1IGNOREINDEX(FIELD1,FIELD2)…
在下面的SQL语句中,TABLE1表中FIELD1和FIELD2上的索引不被利用。
封闭查询缓冲SQL_NO_CACHE
SELECTSQL_NO_CACHEfield1,field2FROMTABLE1;
有一些SQL语句必要及时地查询数据,大概其实不常常利用(大概一天就实行一两次),如许就必要把缓冲关了,不论这条SQL语句是不是被实行过,服务器都不会在缓冲区中查找,每次城市实行它。
强迫查询缓冲SQL_CACHE
SELECTSQL_CALHE*FROMTABLE1;
假如在my.ini中的query_cache_type设成2,如许只要在利用了SQL_CACHE后,才利用查询缓冲。
优先操纵HIGH_PRIORITY
HIGH_PRIORITY可使用在select和insert操纵中,让MYSQL晓得,这个操纵优先辈行。
SELECTHIGH_PRIORITY*FROMTABLE1;
滞后操纵LOW_PRIORITY
LOW_PRIORITY可使用在insert和update操纵中,让mysql晓得,这个操纵滞后。
updateLOW_PRIORITYtable1setfield1=wherefield1=…
延时拔出INSERTDELAYED
INSERTDELAYEDINTOtable1setfield1=…
INSERTDELAYEDINTO,是客户端提交数据给MySQL,MySQL前往OK形态给客户端。而这是并非已将数据拔出表,而是存储在内存内里守候列队。当mysql有空余时,再拔出。另外一个主要的优点是,来自很多客户真个拔出被会合在一同,并被编写进一个块。这比实行很多自力的拔出要快良多。害处是,不克不及前往主动递增的ID,和体系溃散时,MySQL还没有来得及拔出数据的话,这些数据将会丧失。
强迫毗连按次STRAIGHT_JOIN
SELECTTABLE1.FIELD1,TABLE2.FIELD2FROMTABLE1STRAIGHT_JOINTABLE2WHERE…
由下面的SQL语句可知,经由过程STRAIGHT_JOIN强制MySQL按TABLE1、TABLE2的按次毗连表。假如你以为按本人的按次比MySQL保举的按次举行毗连的效力高的话,就能够经由过程STRAIGHT_JOIN来断定毗连按次。
强迫利用一时表SQL_BUFFER_RESULT
SELECTSQL_BUFFER_RESULT*FROMTABLE1WHERE…
当我们查询的了局会合的数据对照多时,能够经由过程SQL_BUFFER_RESULT.选项强迫将了局集放光临时表中,如许就能够很快地开释MySQL的表锁(如许别的的SQL语句就能够对这些纪录举行查询了),而且能够长工夫地为客户端供应年夜纪录集。
分组利用一时表SQL_BIG_RESULT和SQL_SMALL_RESULT
SELECTSQL_BUFFER_RESULTFIELD1,COUNT(*)FROMTABLE1GROUPBYFIELD1;
一样平常用于分组或DISTINCT关头字,这个选项关照MySQL,假如有需要,就将查询了局放光临时表中,乃至在一时表中举行排序。SQL_SMALL_RESULT比起SQL_BIG_RESULT差未几,很少利用。
任何规模的组织都可能受益于外包服务,并在一个标准化和优化的平台上统一其数据库管理任务。基于其本身的特性,DBaaS提供了敏捷和高效的数据库服务,它可以支持多变的需求。

admin 发表于 2015-1-18 18:38:48

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

海妖 发表于 2015-1-25 22:08:46

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

变相怪杰 发表于 2015-2-4 08:49:12

从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。

仓酷云 发表于 2015-2-9 20:42:51

where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

分手快乐 发表于 2015-2-27 21:33:40

是要和操作系统进行Socket通讯的场景。否则建议慎重!

透明 发表于 2015-3-9 14:39:16

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

简单生活 发表于 2015-3-17 00:07:57

同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。

柔情似水 发表于 2015-3-23 08:32:12

而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
页: [1]
查看完整版本: MYSQL教程之mysql force Index 强迫索引