ÓÅ»¯MySQLÊý¾Ý¿â²éѯ
ÓÅ»¯MySQLÊý¾Ý¿â²éѯ
ÔÚÓÅ»¯²éѯÖУ¬Êý¾Ý¿âÓ¦ÓÃ(ÈçMySQL)¼´Òâζ×ŶԹ¤¾ßµÄ²Ù×÷ÓëʹÓá£Ê¹ÓÃË÷Òý¡¢Ê¹ÓÃEXPLAIN·ÖÎö²éѯÒÔ¼°µ÷ÕûMySQLµÄÄÚ²¿ÅäÖÿɴﵽÓÅ»¯²éѯµÄÄ¿µÄ
¡¡¡¡ÈκÎһλÊý¾Ý¿â³ÌÐòÔ±¶¼»áÓÐÕâÑùµÄÌå»á£º¸ßͨÐÅÁ¿µÄÊý¾Ý¿âÇý¶¯³ÌÐòÖУ¬Ò»ÌõÔã¸âµÄSQL²éѯÓï¾ä¿É¶ÔÕû¸öÓ¦ÓóÌÐòµÄÔËÐвúÉúÑÏÖØµÄÓ°Ï죬Æä²»½öÏûºÄµô¸ü¶àµÄÊý¾Ý¿âʱ¼ä£¬ÇÒËü½«¶ÔÆäËûÓ¦ÓÃ×é¼þ²úÉúÓ°Ïì¡£
¡¡¡¡ÈçͬÆäËüѧ¿Æ£¬ÓÅ»¯²éѯÐÔÄܴܺó³Ì¶ÈÉϾö¶¨ÓÚ¿ª·¢ÕßµÄÖ±¾õ¡£ÐÒÔ˵ÄÊÇ£¬ÏñMySQLÕâÑùµÄÊý¾Ý¿â×Ô´øÓÐһЩÐÖú¹¤¾ß¡£±¾ÎļòÒªÌÖÂÛÖî¶à¹¤¾ßÖ®ÈýÖÖ£ºÊ¹ÓÃË÷Òý£¬Ê¹ÓÃEXPLAIN·ÖÎö²éѯÒÔ¼°µ÷ÕûMySQLµÄÄÚ²¿ÅäÖá£
¡¡¡¡1: ʹÓÃË÷Òý
¡¡¡¡MySQLÔÊÐí¶ÔÊý¾Ý¿â±í½øÐÐË÷Òý£¬ÒÔ´ËÄÜѸËÙ²éÕҼǼ£¬¶øÎÞÐèÒ»¿ªÊ¼¾ÍɨÃèÕû¸ö±í£¬ÓÉ´ËÏÔÖøµØ¼Ó¿ì²éѯËÙ¶È¡£Ã¿¸ö±í×î¶à¿ÉÒÔ×öµ½16¸öË÷Òý£¬´ËÍâMySQL»¹Ö§³Ö¶àÁÐË÷Òý¼°È«ÎļìË÷¡£
¡¡¡¡¸ø±íÌí¼ÓÒ»¸öË÷Òý·Ç³£¼òµ¥£¬Ö»Ðèµ÷ÓÃÒ»¸öCREATE INDEXÃüÁΪË÷ÒýÖ¸¶¨ËüµÄÓò¼´¿É¡£ÁбíA¸ø³öÁËÒ»¸öÀý×Ó£º
¡¡¡¡Áбí A
¡¡¡¡mysql£¾ CREATE INDEX idx_username ON users(username);
¡¡¡¡Query OK, 1 row affected (0.15 sec)
¡¡¡¡Records: 1 Duplicates: 0 Warnings: 0
¡¡¡¡ÕâÀ¶Ôusers±íµÄusernameÓò×öË÷Òý£¬ÒÔÈ·±£ÔÚWHERE»òÕßHAVING×Ó¾äÖÐÒýÓÃÕâÒ»ÓòµÄSELECT²éѯÓï¾äÔËÐÐËٶȱÈûÓÐÌí¼ÓË÷ÒýʱҪ¿ì¡£Í¨¹ýSHOW INDEXÃüÁî¿ÉÒԲ鿴Ë÷ÒýÒѱ»´´½¨(ÁбíB)¡£
¡¡¡¡Áбí B
¡¡¡¡mysql> SHOW INDEX from users;
¡¡¡¡| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
¡¡¡¡| users | 1 | idx_username | 1 | username | A | NULL | NULL | NULL | YES | BTREE | |
¡¡¡¡1 row in set (0.00 sec)
¡¡¡¡ÖµµÃ×¢ÒâµÄÊÇ£ºË÷Òý¾ÍÏñÒ»°ÑË«Èн£¡£¶Ô±íµÄÿһÓò×öË÷Òýͨ³£Ã»ÓбØÒª£¬ÇҺܿÉÄܵ¼ÖÂÔËÐÐËٶȼõÂý£¬ÒòΪÏò±íÖвåÈë»òÐÞ¸ÄÊý¾Ýʱ£¬MySQL²»µÃ²»Ã¿´Î¶¼ÎªÕâЩ¶îÍâµÄ¹¤×÷ÖØÐ½¨Á¢Ë÷Òý¡£ÁíÒ»·½Ã棬±ÜÃâ¶Ô±íµÄÿһÓò×öË÷ÒýͬÑù²»ÊÇÒ»¸ö·Ç³£ºÃµÄÖ÷Ò⣬ÒòΪÔÚÌá¸ß²åÈë¼Ç¼µÄËÙ¶Èʱ£¬µ¼Ö²éѯ²Ù×÷µÄËٶȼõÂý¡£Õâ¾ÍÐèÒªÕÒµ½Ò»¸öƽºâµã£¬±ÈÈçÔÚÉè¼ÆË÷Òýϵͳʱ£¬¿¼ÂDZíµÄÖ÷Òª¹¦ÄÜ(Êý¾ÝÐÞ¸´¼°±à¼)²»Ê§ÎªÒ»ÖÖÃ÷ÖǵÄÑ¡Ôñ¡£
¡¡¡¡2: ÓÅ»¯²éѯÐÔÄÜ
¡¡¡¡ÔÚ·ÖÎö²éѯÐÔÄÜʱ£¬¿¼ÂÇEXPLAIN¹Ø¼ü×ÖͬÑùºÜ¹ÜÓá£EXPLAIN¹Ø¼ü×ÖÒ»°ã·ÅÔÚSELECT²éѯÓï¾äµÄÇ°Ãæ£¬ÓÃÓÚ
Ïà¹ØÎĵµ£º
1£º Can’t connect to [local] MySQL server´íÎó
Ò»¸öMySQL¿Í»§¿ÉÒÔÁ½ÖÖ²»Í¬µÄ·½Ê½Á¬½Ómysqld·þÎñÆ÷£ºUnixÌ×½Ó×Ö£¬Ëüͨ¹ýÔÚÎļþϵͳÖеÄÒ»¸öÎļþ(ȱʡ“/tmp /mysqld.sock”)½øÐÐÁ¬½Ó£»»òTCP/IP£¬Ëüͨ¹ýÒ»¸ö¶Ë¿ÚºÅÁ¬½Ó¡£UnixÌ×½Ó×Ö±ÈTCP/IP¸ü¿ì£¬µ«ÊÇÖ»ÓÐÓÃÔÚÁ¬½Óͬһ̨¼ÆËã»úÉϵķþÎñÆ÷¡£Èç¹ûÄ ......
1¡¢ÏÂÔØMySQLµÄLinux°²×°Îļþ
¡¡¡¡Linuxϰ²×°MySQLÐèÒªÏÂÃæÁ½¸öÎļþ£º
¡¡¡¡MySQL-server-5.1.7-0.i386.rpm
¡¡¡¡ÏÂÔØµØÖ·Îª£ºhttp://dev.mysql.com/downloads/mysql/5.1.html£¬´ò¿ª´ËÍøÒ³£¬ÏÂÀÍøÒ³ÕÒµ½“Linux x86 generic RPM (statically linked against glibc 2.2.5) downloads”ÏÕÒµ½“Ser ......
ÓÃmysql_query£¬mysql_fetch_array()ºóÓ¦¸ÃÒª
free_result().function count_admin($where = '')
{
if($where) $where = " WHERE $where";
$result = $this->db->get_one("SELECT count(*) as num from $this->table_admin_role $where");
return $result['num'];
} ......
ʾÀý£º
create procedure proc_name (in parameter integer)
begin
declare variable varchar(20);
if parameter=1 then
set variable='MySQL';
else
set variable='PHP';
end if;
insert into tb (name) values (variable);
end;
MySQLÀ©Õ¹Ò²ÊÇÖ§³Ö´æ´¢¹ý³ÌµÄ£¬²»¹ýÖ»Ö§³ÖÎÞ·µ»Ø½á¹ûµÄ´æ´¢¹ý³Ì
¿ÉÒÔÊ¹Ó ......
1.¶Ô²éѯ½øÐÐÓÅ»¯£¬Ó¦¾¡Á¿±ÜÃâÈ«±íɨÃ裬Ê×ÏÈÓ¦¿¼ÂÇÔÚ where ¼° order by Éæ¼°µÄÁÐÉϽ¨Á¢Ë÷Òý¡£
2.Ó¦¾¡Á¿±ÜÃâÔÚ where ×Ó¾äÖжÔ×ֶνøÐÐ null ÖµÅжϣ¬·ñÔò½«µ¼ÖÂÒýÇæ
·ÅÆúʹÓÃË÷Òý¶ø½øÐÐÈ«±íɨÃ裬È磺
select id from t where num is null
¿ÉÒÔÔÚnumÉÏÉèÖÃ
ĬÈÏÖµ0£¬È·±£±íÖÐnumÁÐûÓÐnullÖµ£¬È»ºóÕâ
Ñù²éѯ£º
sel ......