{"id":4312,"date":"2017-08-21T14:39:07","date_gmt":"2017-08-21T14:39:07","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/netsuite-scripting-which-is-faster-nlapilookupfield-or-nlapiloadrecord-2\/"},"modified":"2026-07-28T18:26:38","modified_gmt":"2026-07-28T18:26:38","slug":"scripts-netsuite-quelle-fonction-est-la-plus-rapide-nlapilookupfield-ou-nlapiloadrecord","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/scripts-netsuite-quelle-fonction-est-la-plus-rapide-nlapilookupfield-ou-nlapiloadrecord\/","title":{"rendered":"Scripts NetSuite : quelle fonction est la plus rapide, nlapiLookupField ou nlapiLoadRecord ?"},"content":{"rendered":"","protected":false},"template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","ga_subtitle":"Un test de performances r\u00e9v\u00e8le des diff\u00e9rences significatives en termes de temps d'ex\u00e9cution entre la r\u00e9cup\u00e9ration de valeurs de champs sp\u00e9cifiques via une recherche directe et le chargement d'un enregistrement complet.","ga_short_answer":"Pour r\u00e9cup\u00e9rer un nombre limit\u00e9 de valeurs de champs dans NetSuite SuiteScript, les fonctions de recherche directe sont nettement plus efficaces que le chargement de l'enregistrement complet. Des tests de performances indiquent que la fonction nlapiLookupField (ou N\/search.lookupFields dans SuiteScript 2.x) est environ 50 fois plus rapide que la fonction nlapiLoadRecord (ou N\/record.load) suivie d\u2019une r\u00e9cup\u00e9ration des champs. Cette optimisation est cruciale pour les performances des scripts.","ga_scenario":"Les d\u00e9veloppeurs ont souvent besoin de r\u00e9cup\u00e9rer des valeurs de champs sp\u00e9cifiques \u00e0 partir d\u2019enregistrements NetSuite au sein de SuiteScript. Une question revient fr\u00e9quemment concernant la m\u00e9thode la plus efficace pour cette t\u00e2che : consulter directement la valeur du champ ou charger l\u2019enregistrement complet, puis extraire le champ. Il est essentiel de comprendre les implications de ces deux approches en termes de performances afin d\u2019optimiser le temps d\u2019ex\u00e9cution des scripts.","ga_solution":"Des tests de performances r\u00e9alis\u00e9s sur des enregistrements NetSuite d\u00e9montrent que la r\u00e9cup\u00e9ration d\u2019une ou de quelques valeurs de champ \u00e0 l\u2019aide d\u2019une fonction de recherche directe est nettement plus rapide que le chargement de l\u2019enregistrement complet suivi de l\u2019acc\u00e8s au champ souhait\u00e9. Plus pr\u00e9cis\u00e9ment, il a \u00e9t\u00e9 constat\u00e9 que la fonction nlapiLookupField \u00e9tait environ 50 fois plus rapide que la combinaison des fonctions nlapiLoadRecord() et getFieldValue(). Bien que le test ait \u00e9t\u00e9 r\u00e9alis\u00e9 \u00e0 l\u2019aide des fonctions SuiteScript 1.0, le principe de performance sous-jacent reste valable pour leurs \u00e9quivalents dans SuiteScript 2.x, \u00e0 savoir respectivement N\/search.lookupFields et N\/record.load. NetSuite recommande vivement d\u2019utiliser SuiteScript 2.x pour tous les scripts nouveaux ou ayant fait l\u2019objet d\u2019une r\u00e9vision en profondeur. Le test consistait \u00e0 extraire 100 enregistrements de clients et de commandes client \u00e0 l\u2019aide d\u2019une recherche enregistr\u00e9e dans le cadre d\u2019un script planifi\u00e9. Pour chaque enregistrement, le temps d\u2019ex\u00e9cution de la fonction nlapiLookupField() a \u00e9t\u00e9 mesur\u00e9 dans une boucle, puis compar\u00e9 au temps d\u2019ex\u00e9cution de la fonction nlapiLoadRecord() suivie de getFieldValue(). Le code SuiteScript 1.0 suivant a \u00e9t\u00e9 utilis\u00e9 pour effectuer cette comparaison de performances :\n\n```\njavascriptfunction testForGoodman() {var filters  [];var columns  [];\/\/Built filters for the searchfilters.push(new nlobjSearchFilter('isinactive', null, 'is', 'F'));\/\/Built columns for the searchcolumns.push(new nlobjSearchColumn('entityid'));\/\/Run the searchvar recordSearchCustomer  nlapiSearchRecord('customer', null, filters, columns);var filters  [];var columns  [];\/\/Built filters for the searchfilters.push(new nlobjSearchFilter('entity', null, 'noneof', 'q'));\/\/Built columns for the searchcolumns.push(new nlobjSearchColumn('entity'));\/\/Run the searchvar recordSearchSales  nlapiSearchRecord('salesorder', null, filters, columns);\/\/******************Customer****************var dateCustomerBefore  new Date();var timeBeforeCust  dateCustomerBefore.getTime();var customerDivider  100;for (var i  0; i < customerDivider; i++) {    nlapiLookupField('customer', recordSearchCustomer[i].getId(), 'entityid');}var dateCustomerAfter  new Date();var timeAfterCust  dateCustomerAfter.getTime();nlapiLogExecution('debug', 'Customer Time For nlapiLookupField',(timeAfterCust - timeBeforeCust));var dateCustomerBefore  new Date();var timeBeforeCust  dateCustomerBefore.getTime();for (var i  0; i < customerDivider; i++) {    var rec  nlapiLoadRecord('customer', recordSearchCustomer[i].getId());    rec.getFieldValue('entityid');}var dateCustomerAfter  new Date();var timeAfterCust  dateCustomerAfter.getTime();nlapiLogExecution('debug', 'Customer Time FornlapiLoadRecord+getField', (timeAfterCust - timeBeforeCust));\/\/*******************sales***********var dateSalesBefore  new Date();var timeBeforeSales  dateSalesBefore.getTime();var salesDivider  100;for (var i  0;  i < salesDivider; i++) {    nlapiLookupField('salesorder', recordSearchSales[i].getId(), 'entity');}var dateSalesAfter  new Date();var timeAfterSales  dateSalesAfter.getTime();nlapiLogExecution('debug', 'Sales Time For nlapiLookupField',(timeAfterSales - timeBeforeSales));var dateSalesBefore  new Date();var timeBeforeSales  dateSalesBefore.getTime();for (var i  0;  i < salesDivider; i++) {    var rec  nlapiLoadRecord('salesorder', recordSearchSales[i].getId());    rec.getFieldValue('entity');}var dateSalesAfter  new Date();var timeAfterSales  dateSalesAfter.getTime();nlapiLogExecution('debug', 'Sales Time For nlapiLoadrecord+getField',(timeAfterSales - timeBeforeSales));}\n```","ga_source_author":"","ga_source_author_email":"","ga_date_original":"2017-08-21T10:39:07-04:00","ga_date_verified":"2026-07-05","ga_source_subject":"Which of these two method has the quickest execution time between nlapiLookupField() and nlapiLoadRecord()+getFieldValue()?","ga_ans_id":"ANS-0653","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The script uses SuiteScript 1.0 functions (e.g., nlapiLookupField(), nlapiLoadRecord(), getFieldValue(), nlapiLogExecution(), nlapiSearchRecord(), nlobjSearchFilter(), nlobjSearchColumn()). While these functions are still supported for existing scripts, NetSuite strongly recommends using SuiteScript 2.x (specifically 2.1) for all new or substantially revised scripts, which utilizes a modular API structure (e.g., N\/search.lookupFields, N\/record.load, record.getValue).; The terminology and best practices for scripting have evolved from the global nlapi-prefixed functions to modular SuiteScript 2.x APIs.","ga_final_category":"SuiteScript Development","footnotes":""},"ga_category":[108,23,108],"ga_audience":[10],"ga_difficulty":[94],"class_list":["post-4312","qa_entry","type-qa_entry","status-publish","hentry","ga_category-developpement-suitescript","ga_category-suitescript-development","ga_audience-developer-suitescript","ga_difficulty-avance"],"taxonomy_info":{"ga_category":[{"value":108,"label":"D\u00e9veloppement SuiteScript"},{"value":23,"label":"SuiteScript Development"},{"value":108,"label":"D\u00e9veloppement SuiteScript"}],"ga_audience":[{"value":10,"label":"Developer\/SuiteScript"}],"ga_difficulty":[{"value":94,"label":"Avanc\u00e9"}]},"featured_image_src_large":[],"author_info":[],"comment_info":"","_links":{"self":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/4312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry"}],"about":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/types\/qa_entry"}],"version-history":[{"count":1,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/4312\/revisions"}],"predecessor-version":[{"id":6233,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/4312\/revisions\/6233"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=4312"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=4312"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=4312"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=4312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}