وهو أسرع: العديد من الصفوف أو العديد من الأعمدة؟

StackOverflow https://stackoverflow.com/questions/1201550

  •  05-07-2019
  •  | 
  •  

سؤال

في الخلية، هو عادة أسرع / أكثر كفاءة / قابلة للعودة 100 صف مع 3 أعمدة، أو الصف 1 مع 100 الأعمدة؟

وبعبارة أخرى، عند تخزين العديد من مفتاح => أزواج قيمة تتعلق قياسية، أنه من الأفضل لتخزين كل أساسيا زوج قيمة => في صف منفصل مع مع RECORD_ID كمفتاح، أو أن يكون صف واحد في RECORD_ID مع عمود لكل مفتاح؟

وأيضا، تفترض أيضا أن مفاتيح سوف تحتاج إلى إضافة / إزالة بانتظام إلى حد ما، والتي افترض أن تؤثر على الصيانة على المدى الطويل من النهج العمود العديد من مرة واحدة يحصل على جدول كبير بما فيه الكفاية.

تعديل: لتوضيح، من قبل "بشكل منتظم" أعني إضافة أو إزالة مفتاح مرة واحدة في الشهر أو نحو ذلك

هل كانت مفيدة؟

المحلول

ويجب عدم إضافة أو إزالة الأعمدة على أساس منتظم.

نصائح أخرى

http://en.wikipedia.org/wiki/Entity-Attribute-Value_model

وهناك الكثير من الأشياء السيئة عن هذا النموذج، وأنا لن استخدامه إذا كان هناك أي بديل آخر. إذا كنت لا تعرف الغالبية (باستثناء عدد قليل من المجالات تخصيص المستخدم) من أعمدة البيانات التي تحتاجها للتطبيق الخاص بك، ثم كنت بحاجة لقضاء المزيد من الوقت في تصميم وأنها من أصل الرقم.

إذا المفاتيح الخاصة بك هي مسبقا (المعروف في وقت التصميم)، ثم نعم، عليك ان تضع كل مفتاح في عمود منفصل.

وإذا لم تكن تعرف في وقت التصميم، ثم لديك لإرجاع البيانات ك قائمة أزواج قيمة المفتاح-التي يجب أن تحليل لاحقا خارج RDBMS.

إذا كنت تخزين أزواج مفتاح / قيمة، يجب أن يكون لديك جدول مع عمودين، واحدة للمفتاح (جعل هذا PK للجدول) واحد للقيمة (وربما لا تحتاج هذه فهرستها على الإطلاق) . تذكر، "المفتاح، مفتاح كله، ولا شيء غير المفتاح."

في النهج بأعمدة، وسوف تجد أنك الجدول ينمو دون ملزمة لإزالة العمود سوف بقصف كل القيم، وأنك لن تريد أن تفعل ذلك. وأنا أتكلم من تجربة هنا بعد أن عملت على النظام القديم الذي كان طاولة واحدة مع ما يقرب من 1000 والأعمدة، ومعظمها حقول بت. في نهاية المطاف، هل تتوقف عن أن تكون قادرة على تقديم القضية إلى حذف أي من الأعمدة لشخص <م> قد يكون استخدامه وآخر مرة فعلت ذلك، كان عليك العمل حتى 2 صباحا التراجع إلى النسخ الاحتياطي.

أولا: تحديد عدد المرات التي يحتاج البيانات الخاصة بك يمكن الوصول إليها. إذا احتاج البيانات دائما المراد استردادها في طلقة واحدة وأكثر من ذلك استخدمت بعد ذلك النظر في تخزين جميع أزواج الرئيسية كقيمة المتسلسلة أو كقيمة أكس. إذا كنت بحاجة للقيام بأي نوع من التحليل المركب على تلك البيانات وكنت في حاجة إلى أزواج قيمة ثم الأعمدة لا بأس بها ولكن تحد لهم إلى القيم التي كنت أعلم أنك سوف تحتاج إلى تنفيذ استعلامات الخاصة بك على. انه من الاسهل عادة لتصميم الاستعلامات التي تستخدم عمود واحد للمعلمة واحدة من صف واحد. سوف تجد أيضا أنه من الأسهل للعمل مع القيم التي يتم إرجاعها إذا كانوا جميعا في صف واحد من كثيرين.

ثانيا: فصل البيانات الخاصة بك الوصول إليها في معظم الأحيان ووضعها في جدول خاص به وبيانات أخرى في بلد آخر. 100 الأعمدة هو الكثير من الطريق حتى أوصي بأن تقوم بفصل البيانات الخاصة بك إلى قطع أصغر من شأنها أن تكون أكثر قابلية للإدارة.

وأخيرا: إذا كان لديك البيانات التي قد تتغير بشكل متكرر ثم يجب عليك استخدام إنشاء العمود (مفتاح) في جدول واحد ثم استخدام قيمة المفتاح العددية ضد الذي كنت تخزين قيمة المفتاح. وهذا يفترض ان تكونوا باستخدام نفس المفتاح أكثر من مرة، وينبغي تسريع البحث الخاص بك عندما تذهب إلى القيام البحث الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top