Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
mongodb֮ʹÓÃexplainºÍhintÐÔÄÜ·ÖÎöºÍÓÅ»¯
 
À´Ô´£º²©¿ÍÔ° ×÷Õߣº Ь³ÇÄÚ²¿ÍƼö ·¢²¼ÓÚ 2016-8-9
  4546  次浏览      30
 

µ±ÄãµÚÒ»ÑÛ¿´µ½explainºÍhintµÄʱºò£¬µÚÒ»¸ö·´Ó¦¾ÍÊÇmysqlÖÐËùνµÄÕâÁ½¸ö¹Ø¼ü´Ê£¬È·Êµ¿ÉÒÔ¿´³ö£¬Õâ¸ö¾ÍÊÇÔÚmysqlÖÐ½è¼ø¹ýÀ´µÄ£¬¼ÈÈ»ÊÇ½è¼ø ¹ýÀ´µÄ£¬ÎÒÏë´ó¼Ò¶¼ÖªµÀÕâÁ½¸ö¹Ø¼ü×ÖµÄÓô¦£¬»°²»¶à˵£¬ËÙËÙ¹Û¿´~~~

Ò»£ºexplainÑÝʾ

1. ¹¹½¨Êý¾Ý

ΪÁË·½±ãÑÝʾ£¬ÎÒÐèÒªcreate ten data to inventory£¬¶øÇÒ»¹ÊÇÒªÔÚno index µÄÇé¿öÏ£¬±ÈÈçÏÂÃæÕâÑù£º

 1 db.inventory.insertMany([
 2 { "_id" : 1, "item" : "f1", type: "food", quantity: 500 },
 3 { "_id" : 2, "item" : "f2", type: "food", quantity: 100 },
 4 { "_id" : 3, "item" : "p1", type: "paper", quantity: 200 },
 5 { "_id" : 4, "item" : "p2", type: "paper", quantity: 150 },
 6 { "_id" : 5, "item" : "f3", type: "food", quantity: 300 },
 7 { "_id" : 6, "item" : "t1", type: "toys", quantity: 500 },
 8 { "_id" : 7, "item" : "a1", type: "apparel", quantity: 250 },
 9 { "_id" : 8, "item" : "a2", type: "apparel", quantity: 400 },
10 { "_id" : 9, "item" : "t2", type: "toys", quantity: 50 },
11 { "_id" : 10, "item" : "f4", type: "food", quantity: 75 }]);

2. ÎÞË÷Òý²éѯ

 b.inventory.find(
   { quantity: { $gte: 100, $lte: 200 } }
).explain("executionStats")

´ÓÉÏͼÖУ¬ÎÒÃÇ¿´µ½ÁËÈý¸öȦȦ£¬ÕâЩ¶¼ÊÇÎÒÃÇÔÚfindÖзdz£ÖØÒªµÄÐÅÏ¢£¬¾ßÌåÐÅÏ¢½âÊÍÈçÏ£º

<1>COLLSCAN

Õâ¸öÊÇʲôÒâË¼ÄØ£¿ Èç¹ûÄã×Ðϸһ¿´£¬Ó¦¸ÃÖªµÀ¾ÍÊÇCollectionScan£¬¾ÍÊÇËùνµÄ¡°¼¯ºÏɨÃ衱£¬¶Ô²»¶Ô£¬¿´µ½¼¯ºÏɨÃèÊDz»ÊǾͿÉÒÔÖ±½Ómapµ½ Êý¾Ý¿âÖеÄtable scan/heap scanÄØ£¿£¿£¿ Êǵģ¬Õâ¸ö¾ÍÊÇËùνµÄÐÔÄÜ×îÀÃ×îÎÞÄεÄÓÉÀ´¡£

<2> nReturned

Õâ¸öºÜ¼òµ¥£¬¾ÍÊÇËùνµÄnumReturned£¬¾ÍÊÇ˵×îºó·µ»ØµÄnum¸öÊý£¬´ÓͼÖпÉÒÔ¿´µ½£¬¾ÍÊÇ×îÖÕ·µ»ØÁËÈýÌõ¡£¡£¡£

<3> docsExamined

ÄÇÕâ¸öÊÇʲôÒâË¼ÄØ£¿£¿¾ÍÊÇdocumentsExamined£¬¼ì²éÁË10¸ödocuments¡£¡£¡£¶ø´Ó·µ»ØÉÏÃæµÄnReturned¡£¡£¡£

ok£¬ÄÇ´ÓÉÏÃæÈý¸öÐÅÏ¢ÖУ¬ÎÒÃÇ¿ÉÒԵóö£¬Ô­À´ÎÒexamine 10 ÌõÊý¾Ý£¬×îÖղŷµ»Ø3Ìõ£¬ËµÃ÷×öÁË7ÌõÊý¾ÝscanµÄÎÞÓù¦£¬ÄÇôÕâ¸öʱºòÎÊÌâ¾ÍÀ´ÁË£¬

ÈçºÎ¼õÉÙexamineµÄdocuments¡£¡£¡£

ÍêÕûµÄplansÈçÏ£º

 View Code

3. ʹÓÃsingle field ¼ÓËÙ²éÕÒ

ÖªµÀǰÒòºó¹ûÖ®ºó£¬ÎÒÃǾͿÉÒÔ½øÐÐÕë¶ÔÐԵĽ¨Á¢Ë÷Òý£¬±ÈÈçÔÚquality×Ö¶ÎÖ®ÉÏ£¬ÈçÏ£º

 db.inventory.createIndex({ quantity: 1})

db.inventory.find(
   { quantity: { $gte: 100, $lte: 200 } }
).explain("executionStats")

ºÃÁË£¬Õâʱºò¾ÍÓÐÒâ˼ÁË£¬µ±ÎÒÃÇÖ´ÐÐÍêcreateindexÖ®ºó£¬ÔÙ´Îexplain£¬4¸öÖØÒªµÄparameters¾ÍƯÏÂÀ´ÁË£º

<1> IXSCAN

Õâ¸öʱºòÔÙÒ²²»ÊÇËùνµÄCOLLSCANÁË£¬¶øÊÇIndexScan£¬Õâ¾Í˵Ã÷ÎÒÃÇÒѾ­ÃüÖÐË÷ÒýÁË¡£

<2> nReturned,totalDocsExamined£¬totalKeysExamined

´ÓͼÖпÉÒÔ¿´µ½Èý¸ö²ÎÊý¶¼ÊÇ3£¬Õâ¾Í˵Ã÷ÎÒÃǵÄmongodb²é¿´ÁË3¸ökey£¬3¸ödocument£¬·µ»Ø3¸öÎĵµ£¬Õâ¸ö¾ÍÊÇËùνµÄ¸ßÐÔÄÜËùÔÚ£¬¶Ô°É¡£

¶þ£ºhintÑÝʾ

˵µ½hint£¬ÎÒÏë´ó¼ÒÒ²ÊÇÖªµÀµÄ£¬ºÜºÃÍæµÄÒ»¸ö¶«Î÷£¬¾ÍÊÇÓÃÀ´force mongodb to excute special index£¬¶Ô°É£¬ÎªÁË·½±ãÑÝʾ£¬ÎÒÃÇ×öÁ½×鸴ºÏË÷ Òý£¬±ÈÈçÕâ´ÎÎÒÃÇÔÚqualityºÍtypeÉϹ¹½¨Ò»Ï£º

buildingÍê³ÉÖ®ºó£¬ÎÒÃǹÊÒâÕâÒ»¸öÕâÑùµÄ²éѯ£¬Õë¶ÔquantityÊÇÒ»¸ö·¶Î§£¬¶øtypeÊÇÒ»¸ö¶¨ÖµµÄÇé¿öÏ£¬ÎÒÃÇforce mongodbȥʹÓÃquantity¿ªÍ· µÄ¸´ºÏË÷Òý£¬´Ó¶øÇ¿ÖÆmongodb give up ÄǸöÒÔ{type:1,quantity:1}µÄ¸´ºÏË÷Òý£¬ºÜÓÐÒâ˼Ŷ£¬±ÈÈçÏÂͼ£º

´ÓͼÖУ¬¿ÉÒÔ¿´µ½£¬ÎÒÃǼì²éÁË6¸ökeys£¬¶ø´Ó×îÖÕÕÒµ½ÁË2¸öÎĵµ£¬ÏÖÔÚÎÒÃǾÍÖªµÀÁË£¬2ºÍ6Ö®¼ä»¹ÊÇÓв»×ãµÄµØ·½µÈ´ýÎÒÃÇÈ¥ÓÅ»¯ÁË£¬¶Ô°É£¬ÏÂÃæ ÎÒÃDz»hintÀ´¿´Ò»ÏÂmongodbµÄ×îÓŵÄplanÊÇÔõôÑùµÄ¡£

ÔÙ¿´ÉÏÃæµÄͼ£¬ÄãÓ¦¸ÃÃ÷°×ÁË£¬mongodb¹ûȻִÐÐÁËÄǸö×îÓŵÄplan£¬ÊDz»ÊǺܺÃÍæ£¬ºÃÁË£¬±¾Æª¾Í˵µ½ÕâÀϣÍû¶ÔÄãÓаïÖú~

   
4546 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ

²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí

GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí