|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对免费版的用户也具有充足的支持服务。在dev.mysql.com上,一个大型的MySQL学习教程强大社区用户和开发者可以讨论所有关于MySQL的事情。这个站点拥有博客、指南、视频、技术交流会、白皮书和论坛等方式的交流。mysql|优化where优化次要是在SELECT中,由于他们最次要是在那边利用,可是一样的优化也可被用于DELETE和UPDATE语句。 但请注重,上面的优化并非完整的。MYSQL实行了很多优化,但我没工夫全体测试.
MySQL的一些优化列鄙人面:
删除不用要的括号:
((aANDb)ANDcOR(((aANDb)AND(cANDd))))
->(aANDbANDc)OR(aANDbANDcANDd)
常数调进:
(a->b>5ANDb=cANDa=5
删除常数前提:
(B>=5ANDB=5)OR(B=6AND5=5)OR(B=7AND5=6)
->B=5ORB=6
索引利用的常数表达式仅盘算一次。
在一个单个表上的没有一个WHERE的COUNT(*)间接从表中检索信息。当仅利用一个表时,对任何NOTNULL表达式也如许做。
有效常数表达式的初期检测。MySQL疾速检测某些SELECT语句是不成能的而且不前往行。
假如你不利用GROUPBY或分组函数(COUNT()、MIN()……),HAVING与WHERE兼并。
为每一个子联合(subjoin),机关一个更复杂的WHERE以失掉一个更快的WHERE盘算而且也尽快跳过纪录。
一切常数的表在查询中的在其他任何表之前被读出。
一个常数的表是:
一个空表或一个有1行的表。
与在一个UNIQUE索引、或一个PRIMARYKEY的WHERE子句一同利用的表,这里一切的索引部分利用一个常数表达式而且索引部分被界说为NOTNULL。
一切以下的表用作常数表:
mysql>SELECT*FROMtWHEREprimary_key=1;
mysql>SELECT*FROMt1,t2WHEREt1.primary_key=1ANDt2.primary_key=t1.id;
春联结表的最好联合组合是经由过程实验一切大概性来找到:(。假如一切在ORDERBY和GROUPBY的列来自统一个表,那末当联合时,该表起首被选中。
假如你利用SQL_SMALL_RESULT,MySQL将利用一个在内存中的表。
假如有一个ORDERBY子句和一个分歧的GROUPBY子句,或假如ORDERBY或GROUPBY包括不是来自联合行列中的第一个表的其他表的列,创立一个一时表。
由于DISTINCT被变更到在一切的列上的一个GROUPBY,DISTINCT与ORDERBY分离也将在很多情形下必要一张一时表。
每一个表的索引被查询而且利用超过少于30%的行的索引。假如如许的索引没能找到,将利用一个疾速的表扫描。
在一些情形下,MySQL能从索引中读出行,乃至不必查询数据文件。假如索引利用的一切列是数字的,那末只要索引树被用来解答查询。
在每一个纪录被输入前,那些不婚配HAVING子句的即将被跳过。
上面是一些疾速的查询例子:
mysql>SELECTCOUNT(*)FROMtbl_name;
mysql>SELECTMIN(key_part1),MAX(key_part1)FROMtbl_name;
mysql>SELECTMAX(key_part2)FROMtbl_name
WHEREkey_part_1=constant;
mysql>SELECT...FROMtbl_name
ORDERBYkey_part1,key_part2,...LIMIT10;
mysql>SELECT...FROMtbl_name
ORDERBYkey_part1DESC,key_part2DESC,...LIMIT10;
以下查询仅利用索引树便可办理(假定索引列是数字的):
mysql>SELECTkey_part1,key_part2FROMtbl_nameWHEREkey_part1=val;
mysql>SELECTCOUNT(*)FROMtbl_name
WHEREkey_part1=val1ANDkey_part2=val2;
mysql>SELECTkey_part2FROMtbl_nameGROUPBYkey_part1;
以下查询利用索引以排序按次检索,不必一次别的的排序:
mysql>SELECT...FROMtbl_nameORDERBYkey_part1,key_part2,...
mysql>SELECT...FROMtbl_nameORDERBYkey_part1DESC,key_part2DESC,...
采用DBaaS解决方案,他们也可以使用同大企业一样的技术。在大型组织中,DBaaS可以提供部门级解决MySQL学习教程,而无需IT部门和采购部门的介入,提供更快和更容易的方法来实现小型解决方案。 |
|