̸Êý¾Ý¿âË÷ÒýºÍSqliteÖÐË÷ÒýµÄʹÓÃ(¶þ)

2014-11-24 11:59:10 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 1
¸ù¾ÝÉÏÎĵķÖÎö£¬ÎÒÃÇ´óÖ¶ÔʲôʱºòʹÓÃË÷ÒýÓÐÁË×Ô¼ºµÄÏë·¨£¨Èç¹ûÄãûÓУ¬»ØÍ·ÔÙ¿´Ò»±é¡£¡£¡££©¡£Ò»°ãÎÒÃÇÐèÒªÔÚÕâЩÁÐÉϽ¨Á¢Ë÷Òý£º
1£©ÔÚ¾­³£ÐèÒªËÑË÷µÄÁÐÉÏ£¬ÕâÊÇÎãÓ¹ÖÃÒɵģ»
2£©¾­³£Í¬Ê±¶Ô¶àÁнøÐвéѯ£¬ÇÒÿÁж¼º¬ÓÐÖØ¸´Öµ¿ÉÒÔ½¨Á¢×éºÏË÷Òý£¬×éºÏË÷Òý¾¡Á¿ÒªÊ¹³£ÓòéѯÐγÉË÷Òý¸²¸Ç£¨²éѯÖаüº¬µÄËùÐè×ֶν԰üº¬ÓÚÒ»¸öË÷ÒýÖУ¬ÎÒÃÇÖ»ÐèÒªËÑË÷Ë÷ÒýÒ³¼´¿ÉÍê³É²éѯ£©¡£ ͬʱ£¬¸Ã×éºÏË÷ÒýµÄǰµ¼ÁÐÒ»¶¨ÒªÊÇʹÓÃ×îÆµ·±µÄÁС£¶ÔÓÚǰµ¼ÁеÄÎÊÌ⣬ÔÚºóÃæsqliteµÄË÷ÒýʹÓýéÉÜÖл¹»á×öÌÖÂÛ¡£
3£©ÔÚ¾­³£ÓÃÔÚÁ¬½ÓµÄÁÐÉÏ£¬ÕâЩÁÐÖ÷ÒªÊÇһЩÍâ¼ü£¬¿ÉÒÔ¼Ó¿ìÁ¬½ÓµÄËÙ¶È£¬Á¬½ÓÌõ¼þÒª³ä·Ö¿¼ÂÇ´øÓÐË÷ÒýµÄ±í¡££»
4£©ÔÚ¾­³£ÐèÒª¶Ô·¶Î§½øÐÐËÑË÷µÄÁÐÉÏ´´½¨Ë÷Òý£¬ÒòΪË÷ÒýÒѾ­ÅÅÐò£¬ÆäÖ¸¶¨µÄ·¶Î§ÊÇÁ¬ÐøµÄ£¬Í¬Ñù£¬ÔÚ¾­³£ÐèÒªÅÅÐòµÄÁÐÉÏ×îºÃÒ²´´½¨Ë÷Òý¡£
6£©ÔÚ¾­³£·Åµ½where×Ó¾äÖеÄÁÐÉÏÃæ´´½¨Ë÷Òý£¬¼Ó¿ìÌõ¼þµÄÅжÏËÙ¶È¡£Òª×¢ÒâµÄÊÇwhere×Ö¾äÖжÔÁеÄÈκβÙ×÷£¨Èç¼ÆËã±í´ïʽ£¬º¯Êý£©¶¼ÐèÒª¶Ô±í½øÐÐÕû±íËÑË÷£¬¶øÃ»ÓÐʹÓøÃÁеÄË÷Òý¡£ËùÒÔ²éѯʱ¾¡Á¿°Ñ²Ù×÷ÒÆµ½µÈºÅÓұߡ£ www.2cto.com
¶ÔÓÚÒÔϵÄÁÐÎÒÃDz»Ó¦¸Ã´´½¨Ë÷Òý£º
1£©ºÜÉÙÔÚ²éѯÖÐʹÓõÄÁÐ
2£©º¬ÓкÜÉÙ·ÇÖØ¸´Êý¾ÝÖµµÄÁУ¬±ÈÈçÖ»ÓÐ0£¬1£¬ÕâʱºòɨÃèÕû±íͨ³£»á¸üÓÐЧ
3£©¶ÔÓÚ¶¨ÒåΪTEXT£¬IMAGEµÄÊý¾Ý²»Ó¦¸Ã´´½¨Ë÷Òý¡£ÕâЩ×ֶγ¤¶È²»¹Ì¶¨£¬»òÐíºÜ³¤£¬»òÐíΪ¿Õ¡£
µ±È»£¬¶ÔÓÚ¸üвÙ×÷Ô¶´óÓÚ²éѯ²Ù×÷ʱ£¬²»½¨Á¢Ë÷Òý¡£Ò²¿ÉÒÔ¿¼ÂÇÔÚ´ó¹æÄ£µÄ¸üвÙ×÷ǰdropË÷Òý£¬Ö®ºóÖØÐ´´½¨£¬²»¹ýÕâ¾ÍÐèÒª°Ñ´´½¨Ë÷Òý¶Ô×ÊÔ´µÄÏûºÄ¿¼ÂÇÔÚÄÚ¡£×ÜÖ®£¬Ê¹ÓÃË÷ÒýÐèҪƽºâͶÈëÓë²ú³ö£¬ÕÒµ½Ò»¸ö²ú³ö×îºÃµÄµã¡£
7. ÔÚsqliteÖÐʹÓÃË÷Òý
1£©Sqlite²»Ö§³Ö¾Û¼¯Ë÷Òý£¬androidĬÈÏÐèÒªÒ»¸ö_id×ֶΣ¬Õâ±£Ö¤ÁËÄã²åÈëµÄÊý¾Ý»á°´¡°_id¡±µÄÕûÊý˳Ðò²åÈ룬Õâ¸öintegerÀàÐ͵ÄÖ÷¼ü¾Í»á°çÑݺ;ۼ¯Ë÷ÒýÒ»ÑùµÄ½ÇÉ«¡£ËùÒÔ²»ÒªÔÙÔÚ¶ÔÓÚÉùÃ÷Ϊ£ºINTEGER PRIMARY KEYµÄÖ÷¼üÉÏ´´½¨Ë÷Òý¡£ www.2cto.com
2£©ºÜ¶à¶ÔË÷Òý²»ÊìϤµÄÅóÓÑÔÚ±íÖд´½¨ÁËË÷Òý£¬È´·¢ÏÖûÓÐÉúЧ£¬ÆäʵÕâ´ó¶àÊýºÍÎÒ½ÓÏÂÀ´½²µÄÓйء£¶ÔÓÚwhere×Ó¾äÖгöÏÖµÄÁÐÒªÏëË÷ÒýÉúЧ£¬»áÓÐһЩÏÞÖÆ£¬Õâ¾ÍºÍǰµ¼ÁÐÓйء£Ëùνǰµ¼ÁУ¬¾ÍÊÇÔÚ´´½¨¸´ºÏË÷ÒýÓï¾äµÄµÚÒ»ÁлòÕßÁ¬ÐøµÄ¶àÁС£±ÈÈçͨ¹ý£ºCREATE INDEX comp_ind ON table1(x, y, z)´´½¨Ë÷Òý£¬ÄÇôx,xy,xyz¶¼ÊÇǰµ¼ÁУ¬¶øyz£¬y£¬zÕâÑùµÄ¾Í²»ÊÇ¡£ÏÂÃæ½²µÄÕâЩ£¬¶ÔÓÚÆäËûÊý¾Ý¿â»òÐí»áÓÐһЩСµÄ²î±ð£¬ÕâÀïÒÔsqliteΪ±ê×¼¡£ÔÚwhere×Ó¾äÖУ¬Ç°µ¼ÁбØÐëʹÓõÈÓÚ»òÕßin²Ù×÷£¬×îÓұߵÄÁпÉÒÔʹÓò»µÈʽ£¬ÕâÑùË÷Òý²Å¿ÉÒÔÍêÈ«ÉúЧ¡£Í¬Ê±£¬where×Ó¾äÖеÄÁв»ÐèҪȫ½¨Á¢ÁËË÷Òý£¬µ«ÊDZØÐë±£Ö¤½¨Á¢Ë÷ÒýµÄÁÐÖ®¼äûÓмä϶¡£¾Ù¼¸¸öÀý×ÓÀ´¿´°É£º
ÓÃÈçÏÂÓï¾ä´´½¨Ë÷Òý£º
CREATE INDEX idx_ex1 ON ex1(a,b,c,d,e,...,y,z);
ÕâÀïÊÇÒ»¸ö²éѯÓï¾ä£º
...WHERE a=5 AND b IN (1,2,3) AND c IS NULL AND d='hello'
ÕâÏÔÈ»¶ÔÓÚabcdËÄÁж¼ÊÇÓÐЧµÄ£¬ÒòΪֻÓеÈÓÚºÍin²Ù×÷£¬²¢ÇÒÊÇǰµ¼ÁС£
ÔÙ¿´Ò»¸ö²éѯÓï¾ä£º
... WHERE a=5 AND b IN (1,2,3) AND c>12 AND d='hello'
ÄÇÕâÀïÖ»ÓÐa£¬bºÍcµÄË÷Òý»áÊÇÓÐЧµÄ£¬dÁеÄË÷Òý»áʧЧ£¬ÒòΪËüÔÚcÁеÄÓұߣ¬¶øcÁÐʹÓÃÁ˲»µÈʽ£¬¸ù¾ÝʹÓò»µÈʽµÄÏÞÖÆ£¬cÁÐÒѾ­ÊôÓÚ×îÓұߡ£
×îºóÔÙ¿´Ò»Ìõ£º www.2cto.com
... WHERE b IN (1,2,3) AND c NOT NULL AND d='hello'
Ë÷Òý½«²»»á±»Ê¹Óã¬ÒòΪûÓÐʹÓÃǰµ¼ÁУ¬Õâ¸ö²éѯ»áÊÇÒ»¸öÈ«±í²éѯ¡£
3£©¶ÔÓÚbetween£¬or£¬like£¬¶¼ÎÞ·¨Ê¹ÓÃË÷Òý¡£
Èç ...WHERE myfield BETWEEN 10 and 20;
Õâʱ¾ÍÓ¦¸Ã½«Æäת»»³É£º
...WHERE myfield >= 10 AND myfield <= 20;
ÔÙÈçLIKE£º...mytable WHERE myfield LIKE 'sql%';;
´ËʱӦ¸Ã½«Ëüת»»³É£º
...WHERE myfield >= 'sql' AND myfield < 'sqm';
ÔÙÈçOR£º...WHERE myfield = 'abc' OR myfield = 'xyz';
´ËʱӦ¸Ã½«Ëüת»»³É£º
...WHERE myfield IN ('abc', 'xyz');
Æäʵ³ýÁËË÷Òý£¬¶Ô²éѯÐÔÄܵÄÓ°ÏìÒòËØ»¹Óкܶ࣬±ÈÈç±íµÄÁ¬½Ó£¬ÊÇ·ñÅÅÐòµÈ¡£Ó°ÏìÊý¾Ý¿â²Ù×÷µÄÕûÌåÐÔÄܾÍÐèÒª¿¼ÂǸü¶àÒòËØ£¬Ê¹Óøü¶ÔµÄ¼¼ÇÉ£¬²»µÃ²»ËµÕâÊÇÒ»¸öºÜ´óµÄѧÎÊ¡£
×îºóÔÚandroidÉÏʹÓÃsqliteдһ¸ö¼òµ¥µÄÀý×Ó£¬¿´ÏÂË÷Òý¶ÔÊý¾Ý¿â²Ù×÷µÄÓ°Ïì¡£
´´½¨ÈçϱíºÍË÷Òý£º
db.execSQL("create table if not exists t1(a,b)");
db.execSQL("create index if not exists ia on t1(a,b)");
²åÈë10ÍòÌõÊý¾Ý£¬·Ö±ð¶Ô±í½øÐÐÈçϲÙ×÷£º www.2cto.com
select * from t1 where a='90012'
²åÈ룺insert into t1(a,b) values('10008','name1.6982235534984673')
¸üУºupdate t1 set b='name1.999999' where a = '887'
ɾ³ý£ºdelete from t1 where a = '1010'
Êý¾ÝÈçÏ£¨5´Î²»Í¬µÄ²Ù×÷ȡƽ¾ùÖµ£©£º
²Ù×÷ ÎÞË÷Òý ÓÐË÷Òý
²éѯ 170ms 5ms
²åÈë 65ms 75ms
¸üР240ms 52ms
ɾ³ý 234ms 78ms
¿ÉÒÔ¿´µ½ÏÔÖøÌáÉýÁ˲éѯµÄËÙ¶È£¬ÉÔÉÔ¼õÂýÁ˲åÈëËÙ¶È£¬»¹ÉÔÉÔÌáÉýÁ˸üÐÂÊý¾ÝºÍɾ³ýÊý¾ÝµÄËÙ¶È¡£Èç¹û°Ñ¸üкÍɾ³ýÖеÄwhere×Ó¾äÖеÄÁл»³Éb£¬ËٶȾͺÍûÓÐË÷ÒýÒ»ÑùÁË£¬ÒòΪË÷ÒýʧЧ¡£ËùÒÔË÷ÒýÄÜ´ó·ù¶ÈÌáÉý²éѯËÙ¶È£¬¶ÔÓÚɾ³ýºÍ¸üвÙ×÷£¬Èç¹ûwhere×Ó¾äÖеÄÁÐʹÓÃÁËË÷Òý£¬¼´Ê¹ÐèÒªÖØÐÂbuildË÷Òý£¬ÓпÉÄÜËÙ¶È»¹ÊDZȲ»Ê¹ÓÃË÷ÒýÒª¿ìµÄ¡£¶ÔÓë²åÈë²Ù×÷£¬Ë÷ÒýÏÔÈ»ÊǸö¸ºµ£¡£Í¬Ê±£¬Ë÷ÒýÈÃdbµÄ´óСÔö¼ÓÁË2±¶¶à¡£ www.2cto.com
»¹ÓиöҪͲ۵ÄÊÇ£¬androidÖеÄrawQurey·½·¨£¬Ö´ÐÐÍêsqlÓï¾äºó·µ»ØÒ»¸öcursor£¬Æäʵ²¢Ã»ÓÐÍê³ÉÒ»¸ö²éѯ²Ù×÷£¬ÎÒÔÚrawquery֮ǰºÍÖ®ºó¼ÆËã²éѯʱ¼ä£¬ÓÀÔ¶ÊÇ1ms...ÕâÈÃÎÒÎޱȿàÃÆ¡£¿´ÁËÏ ԴÂ룬ÔÚ¶Ôcursorµ÷ÓÃmoveToNextÕâÐ©ÒÆ¶¯Óα귽·¨Ê±£¬¶¼»á×îÖÕÏȵ÷ÓÃgetCount·½·¨£¬¶øgetCount·½·¨²Å»áµ÷ÓÃnative·½·¨µ÷ÓÃÕæÕýµÄ²éѯ²Ù×÷¡£ÕâÖÖÉè¼ÆÏÔÈ»¸ü¼ÓºÏÀí¡£