عندما نقوم بتطوير SQL، سنجد أن تنفيذ ASP بطيء في بعض الأحيان، يمكننا استخدام الطرق التالية لتحسين كفاءة التنفيذ.
[b]الطريقة الأولى: حاول استخدام لغة SQL المعقدة بدلاً من مجموعة من لغة SQL البسيطة[/b]
بالنسبة لنفس المعاملة، يمكن إكمال SQL معقد بشكل أكثر كفاءة من مجموعة SQL البسيطة. عندما يكون هناك استعلامات متعددة، يجب أن تكون جيدًا في استخدام JOIN.
oRs=oConn.Execute(اختر * من الكتب)
في حين لا ors.Eof
strSQL = حدد * من المؤلفين حيث AuthorID=&oRs(AuthorID) ors2=oConn.Execute(strSQL)
Response.write ors(Title)&>>&oRs2(Name)&<br>
ors.MoveNext()
com.wind
أبطأ من الكود التالي:
strSQL=حدد Books.Title,Authors.Name من الكتب، انضم إلى المؤلفين على Authors.AuthorID=Books.AuthorID
ors=oConn.Execute(strSQL)
في حين لا ors.Eof
Response.write ors(Title)&>>&oRs(Name)&<br>
ors.MoveNext()
com.wind
[b]الطريقة الثانية: حاول تجنب استخدام مجموعة السجلات القابلة للتحديث[/b]
oRs=oConn.Execute(اختر * من المؤلفين حيث معرف المؤلف=17,3,3)
ors(Name)=DarkMan
ors.Update()
أبطأ من الكود التالي:
strSQL = تحديث اسم مجموعة المؤلفين = "DarkMan" حيث معرف المؤلف = 17
oConn. تنفيذ strSQL
[b]الطريقة الثالثة: عند تحديث قاعدة البيانات، حاول استخدام التحديثات الدفعية[/b]
قم بتكوين كل SQL في دفعة واحدة كبيرة من SQL وتشغيلها مرة واحدة، وهذا أكثر كفاءة من تحديث البيانات واحدة تلو الأخرى. سيؤدي هذا أيضًا إلى تلبية احتياجات معالجة المعاملات الخاصة بك بشكل أفضل:
strSQL=
strSQL=strSQL&SET XACT_ABORT ON/n;
strSQL=strSQL&بدء المعاملة/n;
strSQL=strSQL&Insert INTOorders(OrdID,CustID,OrdDat) VALUES('9999','1234',GETDATE())/n;
strSQL=strSQL&Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES('9999','01','G4385',5)/n;
strSQL=strSQL&Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES('9999','02','G4726',1)/n;
strSQL=strSQL&COMMIT TRANSACTION/n;
strSQL=strSQL&SET XACT_ABORT OFF/n;
oConn.Execute(strSQL);
من بينها، تخبر عبارة SET XACT_ABORT OFF SQL Server أنه في حالة مواجهة خطأ أثناء معالجة المعاملة التالية، سيتم إلغاء المعاملة المكتملة.
[b]الطريقة الرابعة، فهرس قاعدة البيانات[/b]
بالنسبة لتلك الحقول التي ستظهر في عبارة Where، يجب عليك أولاً التفكير في الفهرسة، كما يجب أيضًا مراعاة تلك الحقول التي تحتاج إلى الفرز.
كيفية إنشاء فهرس في MS Access: حدد الجدول الذي تريد فهرسته في Access، وانقر فوق تصميم، ثم قم بتعيين فهرس الحقل المقابل.
كيفية إنشاء فهرس في MS SQL Server: في SQL Server Manager، حدد الجدول المقابل، ثم صمم الجدول، وانقر بزر الماوس الأيمن، وحدد خصائص، وحدد الفهارس/المفاتيح
[b]الطريقة الخامسة: تجنب جعل حقل النص كبيرًا جدًا[/b]
عندما لا يكون حجم قيمة السلسلة ثابتًا، فإن استخدام varchar أفضل من استخدام char. لقد رأيت ذات مرة مثالاً لبرنامج حيث تم تعريف الحقل على أنه TEXT(255)، ولكن قيمته كانت غالبًا 20 حرفًا فقط. يحتوي جدول البيانات هذا على 50 ألف سجل، مما يجعل قاعدة البيانات هذه كبيرة جدًا، ولا بد أن تكون قواعد البيانات الكبيرة أبطأ.