الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حول سرعة عملية البحث

مغلق
بدأه صاحبة السمو في 8 يناير 2007 · 12 رد · 1,740 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني الاعزاء

السلام عليكم

مدري والله ادا هو دا المكان المناسب لكي اضع فيه سوالى فارجو المعذره ادا في اي تجاوز مع العلم انني لا امانع نقل هدا الموضوع الى القسم التابع له

سوالى حول عملية البحث

انا استخدمت قبل كدا لغه كليبرت وكنت مبرمج فيها صفحه تقوم بالتالى

انا عندي حساب معين له مفتاحين رئسين اريد استرجاع كل الصفوف التى يوجد فيها هذا الحساب والتى تكون محصوره بين تاريخين محددين

يعني سوف يقوم المستحدم بادخال رقمين ( خاصة بـ حساب معين ) وايضا يقوم بادخال تاريخين وعند الكبس على زر البوتم يسترجع كل الصفوف التى يوجد بها هذا الحساب

والمحصوره بين التاريخين الذي قام المستخدم بادخلهما

سوالى حول المده الزمنية التي سوف تستقرقه هذه العملية علما ان عدد الصفوف في الجدول الذي ستتم عليه هذ العملية عليه حوالى نص مليون سطر مش اكثر

انا كنت عامله الحركه دي على لغه كليبرت وكان ما يستقرق وقت نهائيا يعني يمكن ثانية او اقل

ما اعرف كيف راح يكون الوقت في بيئه الدوت نت

ارجو لمن يعرف الاجابة ويكون قد جرب دا الشي ان يفيديني

لانه ادا كان الوقت كبير جدا راح استخدم عملية الاندكس واجعل رقم الحساب ( الذي يتكون من مفتاحين رئسين ) نص وليس رقم لكي تتم عملية الاندكس بسرعه

بصرحه انا خايفه اكتير من عملية الاندكس لاني ما استخدمتها في الفيجول دوت نت يعني في كليبرت استخدمتها وماكان فيها مشكله بس في الفجول لا اعلم بصراحه كيف راح استخدمها ولا حتى عندي فكره حول طريقه استخدامها

وحتى لو غيرت نوع المفتاح الى نص بدل رقم راح يكون عندي مشاكل كثيره في باقي البرنامج

لذلك اتمنى ان الحركه دي ماتاخد وقت

اكرر اتمنى من الذين لديهم خبره او درايه حول هذا الموضوع او قامو بعمليه مشابهه ان يفيدوني حولها ولكم جزيل الشكر

1145392391.gif
#2

السلام عليكم

سؤال فقط ما هي نوع قاعدة البيانات التي ستسترجعين منها البيانات؟

في المثال يتضح المقال

#3

نوع قاعده البيانات المستخدمه حاليا هي اكسس

لماذا هل تختلف سرعه نقل البيانات من نوع واخر

وماذا لو استخدمت مستقبلا ال sql server

1145392391.gif
#4

نعم تختلف , كذلك من الظلم مقارنة Access بـ SQL

كون الـ SQL أسرع أقوى أفضل أنشط أأمن اسلم و احكم.

وكذلك ان SQL يستخدم الاجراءت المعدلة StoredProcedures وهي اسرع بكثير من غيرها.

وهنالك امور كثيرة جداً لا تستوعبها هذه الصفحة لبيان المفاضلة بين الغريمين.

في الاخير أقول هذا السؤال يفضل ان يكون عند اهل قاعدة البيانات وليس هنا,

و بالتحديد عن اهل الـ Access

فالموضوع منقول....

في المثال يتضح المقال

#5

مشكوره اخوي اكثير

بس للاسف ماجوبتني على السوال

يعني كنت ابغه اعرف كيف معدل الوقت في هيك عملية

اتمنى من الدين قامو بهده الحركه وجربوها ان يفيدونني حتى انتا اخوي الغملاسي لو مرت عليك دي المشكله من قبل

اتمنى انك تقول لنا ماذا حصل معك لكي نستفيد من خبرتك

عفوا انا اللى فهمته انو لو كانت في sql server لا يوجد مشكله بالوقت

بس باقي اعرف كيف لوكانت بالاكسس

1145392391.gif
#6

لا أعتقد أنها ستستغرق وقتاً طويلاً إذا كان هناك indexes مناسبة. الوقت سيعتمد أيضاً على سرعة الجهاز. الطريق الوحيدة لمعرفة ذلك هو بالتجربة على الطبيعة.

#7

السلام عليكم

أولاً الرقم أسرع من النص (هذا من المسلمات في البرمجة )

ثانياً : وضع الـ indexes على مفتاحين لا يحدث اي مشكلة.

ثالثاً : نصف مليون سطر تعتبر قيمة لا اعتبار لها.

وانما الاعتبار في محتوى الصفوف كمثلاً Memo أو صور أو وثائق..

رابعاً : عندما تنتهين من التحليل , نجيب على الاسئلة الاخرى كمقارنة التواريخ أو جلب البيانات .

موفقة إن شاء الله.

في المثال يتضح المقال

#8

السلام عليكم

في البداية انا لن استخدم الندكس لاني اصلا ما اعرف كيف يستخدم في بيئه الدوت نت

انا فقط سوف استخدم الكود التالى في حدث الاستدعاء

select * from clmain where

cl = textbox1.text

and

nm = textbox2.tex

and

date between ( textbox3.text, textbox4.text)

عمليت المقارنه سوف تتم بالترتيب المدكور يعني الرقم الاول ثم التاني وبعدين يشوف التاريخ

ونوع البيانات اكسس في جدول لا يتعدي عدد الاسطر فيه عن نص مليون ( اصلا في بداية كل سنه سوف اقوم بتصفير هدا الجدول)

الجدول يحتوي فقط على بيانات من نوع ارقام ونص وتاريخ وايضا احدى القيمتين false or true

يعني لا يحتوي لا على صور ولا على وثائق

شكرا لكم

1145392391.gif
#9

السلام عليكم

اقتباس
في البداية انا لن استخدم الندكس لاني اصلا ما اعرف كيف يستخدم في بيئه الدوت نت
الـ Indexer يطبق من قاعدة البيانات وليس من بيئة التطوير NET.,فعند الضغط على الحقل ستجدين من ضمن خصائصه

الخاصية Indexed تختارين منها ام القيم yes (no duplicate) للمفتاح الاساسي

و yes (yes dublicate) لغير ذلك و no للحقول التي لا يعتمد عليها في البحث,

شاهدي في الصورة المرفقة مكان هذه الخاصية.

اقتباس
يعني لا يحتوي لا على صور ولا على وثائق
حتى ولو احتوى على ذلك

فهنالك حلول كثيرة لها.

بالتوفيق إن شاء الله.

post-17025-1168338612_thumb.jpg

تم تعديل هذه المشاركة بواسطة الغملاسي في 9 يناير 2007 في 13:32

في المثال يتضح المقال

#10

استاذنا الغملاسي الف شكر لك على مجهوداتك واجابتك الرائعه

في البداية للحين ماعرفت شو هو الجواب

حول سرعة البحث باستخدام الكود الذي دكرته في المشاركه السابقه وهو

select * from clmain where

cl = textbox1.text

and

nm = textbox2.tex

and

date between ( textbox3.text, textbox4.text)

عمليت المقارنه سوف تتم بالترتيب المدكور يعني الرقم الاول ثم التاني وبعدين يشوف التاريخ

لن استخدم اي شي اخر فقط جمله استعلام عادية في بيئه الدوت نت

اما موضوع الاندكس انا كنت بس اسال هل استخدمه ام لا

لانو الحركه دي انا عملتها من قبل في لغة كليبرت وكان البرنامج شغال under doc

لذلك استخدمت داتا بيس من نوع dbu

وفيها استخدمت موضوع الاندكس بالطريقه التالية

انا عندي مفتاحين رئسيين كان عباره عن رقم

فعند عمل بحث كنت استخدم الاندكس ياخد كمثال الارقام 1 و 3 لكن للاسف كانت تواجهني مشكله وهي انه عند القيام بعملية الاندكس يحسبها كالتالى 1+3

ويعطي الناتج 4 يعني يعطيني قيمه غلط

عندها كان على ان اجد طريقه اخرى فحولت نوع البيانات من رقم الى نص لانو هنا راح تنحل المشكله في عمليه البحث على مفتاحين

يعني مثلا لو اخد 1 و 3 سوف يقراءها 31 وهو المطلوب وعندها ستكون عملية البحث اسرع في جدول يحتوي على نص مليون سطر

حاليا الحركه دي لااستطيع ان اعملها في الدوت نت مربوط بالاكسس لسببين رئسيين

اولهما انه لا استطيع تحويل القيم من رقم الى نص لانو راح تواجهني مشاكل كبيره وكثيره في البرنامج انا في غنى عنها

ثاني شي هو انني قليل الخبره في التعامل في موضوع الاندكس في الاكسس

اسفه لدكر دي النقطه بالتفصيل بس علشان ابين ابعاد النقطه دي

مايهمني بالدرجه الاولى هو الاجابه على السوال الاول حول سرعه عملية البحث باستخدام الكود السابق فقط

اما موضوع الاندكس فانا راح اسئل خبراء الاكسس ولكن اتمنى من الدين لديهم خبره في الموضوع دا ان يوضحو لي هده النقطه

1145392391.gif
#11

السلام عليكم

تحويل الرقم إلى نص , فكرة سيئة للغاية , فحول عملية الـ Concatenation بالتحديد ليست بها اي مشكلة.

فيمكنكِ استخدام str function أو Cast أو convert لتلك العملية على سبيل المثال .

SELECT * FROM dbo.Main
WHERE ID = STR(11)

هنا الرقم سيكون احدى عشر وليس اثنان.

الكود المعروض لا بأس به . المهم هو هل ستكون البيانات للقراءة فقط أم للقراءة والكتابة ( تحديث حذف و اضافة ) ؟

لوكانت للقراءة سنستخدم DataReader ولو كانت لغير ذلك سنستخدم DataAdapter موفقة بإذن الله.

تم تعديل هذه المشاركة بواسطة الغملاسي في 10 يناير 2007 في 11:25

في المثال يتضح المقال

#12

بسم الله والحمد لله والصلاة والسلام على رسول الله

الأخوة الفاضل

أنا عندى حل لهذه المشكلة اسمحوا لى أن أقوم بعرضها أسأل الله أن تكون مفيدة لكم

فإذا كان عندى عنصرين من النوع رقم مثال

item_id وهو رقم الصنف

store_id وهو رقم المخزن

سوق اقوم بدمج تلك العنصرين دون جمعهم بالكود التالى : -

Me!

 = Me![list_STORES] * 10000 + Me![list_items]

فإذا كان رقم الصنف = 1

ورقم المخزن = 4

تكون النتيجة كالتالى : -

ME!CODE= 100004

كما أنه يمكن أستخدام أمر SEEK لسرعة البحث السريعة جداً

أرجو مشاركتكم والرد على فى أقرب وقت

وجزاكم الله خيراً

#13

استاذنا الغملاسي

يعطيك الف عافية

سوف تكون العملية للقراءه فقط لان المطلوب فقط استرجاع حساب معين ( له رقمين ) بين فترتين محددتين

بس للعلم انا سوف انقل الناتج الى الداتا سيت ثم اقوم بعمليه جمع اوطرح لقيمه الرصيد في ذلك الحساب ثم اعرض الكل ( اقصد ناتج عملية الطرح والجمع بالاضافه لما تم استرجاعه)

في الداتاغريد فيو بالطبع باستخدام الريبورت

اما بالنسبه للموضوع الاخر وهو الكود الذي كتبته فلا تنسى ان عملية المقارنه سوف تتم في عامودين اثنين

يعني مثلا لما انتا استخدمت الكود

WHERE ID = STR(11)

انا عندي اصلا عامودين لنفرض انهما id1 , id2

في موضوع داله STR راح استخدمها كالتالى

STR( TEXTBO1.TEXT,TEXTBOX2.TEXT

على ما اعتقد انو كدا استخدامها صحيح

بس الشرط نفسه ماذا افعل فيه كدا يعني

WHERE STR(ID1,ID2) = STR( TEXTBO1.TEXT,TEXTBOX2.TEXT)

صح

اسفه للاطاله بس مادام الموضوع انفتح لا يمنع انك اشوي تشرحلى ماهي الطريقه الصحيحه للكود اللي حضرتك كتبته

الاخ MOHAMED ORA

بصراحه الكود المكتوب جدا روعه يعني من جد لو كنت اعرفك من زمان كنت اخدت دي الفكره وطبقتها على برنامجي القديم

لى طلب صغير منك انك تشرح اشوي موضوع seek

وكيف يمكن استخدامه

ويعطيك الف عافية على ردك

تم تعديل هذه المشاركة بواسطة صاحبة السمو في 10 يناير 2007 في 02:13

1145392391.gif

هذا الموضوع مغلق.

مواضيع مشابهة