মাইএসকিএল - কয়টি কলাম খুব বেশি?


111

আমি একটি টেবিল সেট আপ করছি যা wards০ কলামের উপরে হতে পারে। আমি এখন এটিকে বিভক্ত করার বিষয়ে ভাবছি কারণ প্রতিবার টেবিলটি অ্যাক্সেস করা হলে কলামগুলির কিছু ডেটা প্রয়োজন হবে না। তারপরে আবার, আমি যদি এটি করি তবে আমার সাথে যোগ দিতে হবে।

কোন মুহুর্তে, যদি কোনও হয়, তবে এটি খুব বেশি কলাম হিসাবে বিবেচিত হয়?


6
আমাদের সব সময় নির্বাচন * ব্যবহার করতে হবে না। আমাদের কাছে সর্বদা আমাদের প্রদত্ত পরিস্থিতির জন্য প্রয়োজন কেবল কলামগুলি নির্বাচন করার বিকল্প রয়েছে।
এপিসি

3
70 টি কলাম ?! এইগুলির মধ্যে কতগুলি নাল হতে পারে না?
ওএমজি পনিস

1
বড় প্রশ্ন হ'ল ... আপনি কি নিজের টেবিলগুলি স্বাভাবিক করছেন? 70 হ'ল একটি অস্বাভাবিক পরিমাণ, যদি না আপনি ইচ্ছাকৃতভাবে পারফরম্যান্সের জন্য অস্বীকৃতি জানান (খুব অল্প কিছু জিনিসে 70 টি স্বতন্ত্র বৈশিষ্ট্য থাকে)। আপনি যদি পারফরম্যান্সের স্বার্থে অস্বীকার করছেন তবে আমি ChssPly76 এর সাথে একমত হব যে আপনি যা ব্যবহার করতে পারবেন ডেটাবেস আপনাকে দূরে সরিয়ে দেবে।
গুডেকে

2
@KM। এটা কি রসিকতা হওয়ার কথা? আমি মাইএসকিউএল এ নতুন এবং এটি পেতে পারি না, আপনি কি বোঝাতে চেয়েছিলেন জোইন একটি ভাল জিনিস বা চেষ্টা এবং এড়ানো কিছু?
এলিয়া ইলিয়াশেনকো

2
যতটা যোগ দেয় এসকিউএল এর মূল অংশ, যোগ দেওয়ার জন্য যোগদান করা সম্ভবত আপনার যা কিছু অ্যাপ্লিকেশন রয়েছে তার জন্য কর্মক্ষমতা এবং রক্ষণাবেক্ষণকে হ্রাস করবে।
জেটিওন

উত্তর:


142

এটি একবারে ডাটাবেস দ্বারা সর্বাধিক সীমাবদ্ধতার বেশি হয়ে গেলে এটি অনেকগুলি বিবেচিত হয় ।

প্রতিটি ক্যোয়ারীর মাধ্যমে আপনার প্রতিটি কলাম ফেরত দেওয়ার দরকার নেই তা পুরোপুরি স্বাভাবিক; এজন্যই নির্বাচন নির্বাচন আপনার স্পষ্টভাবে আপনার প্রয়োজনীয় কলামগুলির নাম দিতে দেয়।

সাধারণ নিয়ম হিসাবে, আপনার টেবিলের কাঠামোটি আপনার ডোমেন মডেলকে প্রতিবিম্বিত করা উচিত; যদি সত্যিই আপনার কাছে 70 (100 টি কী থাকে) বৈশিষ্ট্যগুলি একই সত্তার সাথে সম্পর্কিত তবে এগুলি একাধিক টেবিলগুলিতে আলাদা করার কোনও কারণ নেই।


29
@ কেএম - এ কারণেই আমি বলেছি "ডোমেন মডেলটিতে একই সত্তার সাথে সম্পর্কিত বৈশিষ্ট্য"। টেবিলের উচ্চ সংখ্যক কলাম এটিকে অস্বীকৃতিযুক্ত করে না; এটি কি বলেছিল যে কলামগুলি বিষয়টিকে উপস্থাপন করে। এ ছাড়াও, যখন স্বাভাবিকীকরণ অবশ্যই একটি ভাল জিনিস, তবে এটি জীবনের সমস্ত সমস্যার সমাধান নয়। কৌশল কৌশল - আপনি কি মনে করেন যে এসও প্রশ্ন / উত্তরের পাশের ভোটের সংখ্যাটি select count(*) from votesপ্রতিবার হিসাবে গণনা করা হয় বা আপনি কি মনে করেন যে এটি সম্ভবত অস্বীকৃত? এটি কি এসও ডাটাবেসটিকে খারাপ এবং জেফ আতউডকে পাগল করে তোলে?
ChssPly76

@ ChssPly76, এটি কোনও সম্পর্কিত মডেল নয় একটি সম্পর্কিত ডেটাবেস। সারণী, সারি এবং কলাম রয়েছে, সীমাবদ্ধতার মধ্যে কাজ করুন যদি আপনি সর্বাধিক পারফরম্যান্স চান তবে পারফরম্যান্সের খাতিরে সুবিধার্থে আপনার অবজেক্টগুলি নকল করুন। তাহলে কোনও ব্যক্তির সম্পর্কে প্রতিটি তথ্য একই সারির মধ্যে সংরক্ষণ করা উচিত? না, এগুলি ভেঙে তাদের বিভিন্ন টেবিলগুলিতে গ্রুপ করুন (আমার উদাহরণটি আমার পূর্ববর্তী মন্তব্য হিসাবে তৈরি করে): "ব্যক্তি", "ক্রিয়াকলাপগুলি" "হেলথ রেকর্ডস"। পারফরম্যান্স কারণে একটি এসইউএম সংরক্ষণ করা যোগদানগুলি এড়ানোর জন্য 70 টি কলামে সমস্ত ডেটা রাখার চেয়ে সম্পূর্ণ আলাদা একটি সমস্যা।
কেএম

20
"নাম্বার অফ্টিথপুল্ড" ব্যক্তির রেকর্ডের অংশ হওয়া উচিত? না, এটি সম্ভবত কোনওভাবেই সংরক্ষণ করা উচিত নয় - আপনার ডোমেন মডেলটির যদি এই স্তরের বিশদ প্রয়োজন হয় তবে আপনি "টুথেক্সট্রাকশন রেকর্ড" থেকে সেই তথ্যটি পাবেন। তবে এটি আপনার (এবং, সাহস আমি বলার অপেক্ষা রাখে না বরং স্বীকৃত) উদাহরণ - এটি আমার বক্তব্যের সাথে কিছু করার নেই: একটি টেবিলের বৃহত সংখ্যক কলামের অর্থ এই নয় যে টেবিলটি অস্বীকৃত। রিয়েল এস্টেট চুক্তি / ক্রয়ের আদেশ / অন্যান্য আর্থিক নথিগুলি কেবল কয়েকটি উদাহরণের জন্য বিবেচনা করুন। এগুলি কি আরও একাধিক টেবিলে বিভক্ত করা যেতে পারে? হ্যাঁ. এরকম কোনও কারণ আছে? আসলে তা না.
ChssPly76

1
+1, এটি হাসিখুশি ছিল। আপনি যদি অন্য একটি টেবিল তৈরি করে থাকেন এবং এটি কেবলমাত্র 1: 1 সম্পর্ক হয়ে উঠছে আপনার সম্ভবত এটি কেবল প্রধান সারণীতে অন্তর্ভুক্ত করা উচিত। এটি স্থান বাঁচাতে যাচ্ছে না, আপনি যদি টেবিলের মধ্যে এটি না থাকার তথ্য উপাত্তকে অনুরোধ না করেন তবে এটি এত বেশি ভাল সঞ্চালন করবে না। আমার পক্ষে এখনই মনে মনে আসার একমাত্র যুক্তিযুক্ত কারণ হ'ল এসএসএন, ক্রেডিট কার্ড সম্পর্কিত তথ্য ইত্যাদির মতো সংবেদনশীল তথ্য যদি এখানে থাকে ...
Vandel212

1
আমার যদি একটি টেবিলের 15 টি কলস থাকে এবং অন্যটিতে 300 টি কলস থাকে তবে দুটি টেবিলের প্রাথমিক কী একই। দুটি সারণীতে একটি কলাম নির্বাচন করুন, কর্মক্ষমতা উল্লেখযোগ্যভাবে পৃথক হবে?
অফারটি

28

কয়েকটি কলামের সাহায্যে টেবিলটি কয়েকটিতে বিভক্ত করার কিছু সুবিধা রয়েছে, যাকে ভার্টিকাল পার্টিশনও বলা হয় । এখানে কয়েকটি দেওয়া হল:

  1. আপনার যদি অনেকগুলি সারি সহ সারণী থাকে তবে সূচী পরিবর্তন করতে খুব দীর্ঘ সময় লাগতে পারে, কারণ মাইএসকিউএলকে সারণীর সমস্ত সূচী পুনর্নির্মাণের প্রয়োজন। সূচিগুলি কয়েকটি টেবিলের উপর বিভক্ত হওয়া দ্রুত তৈরি করতে পারে।

  2. আপনার প্রশ্ন এবং কলামের ধরণের উপর নির্ভর করে, মাইএসকিউএল অস্থায়ী টেবিলগুলি (আরও জটিল নির্বাচনী প্রশ্নের ক্ষেত্রে ব্যবহৃত) ডিস্কে লিখতে পারে। এটি খারাপ, কারণ ডিস্ক আই / ও-তে বড় বোতল-ঘাড় হতে পারে। আপনার ক্যোয়ারিতে বাইনারি ডেটা (পাঠ্য বা ব্লব) থাকলে এটি ঘটে।

  3. বৃহত্তর টেবিল ধীরে ধীরে ক্যোয়ারী কার্য সম্পাদন করতে পারে।

অকালে অপ্টিমাইটিস করবেন না, তবে কিছু ক্ষেত্রে আপনি সংকীর্ণ টেবিল থেকে উন্নতি পেতে পারেন।


5
মাইএসকিউএলকে কেবলমাত্র একক একটিকে সংশোধন করা হলে সারণীতে সমস্ত সূচকগুলি পুনর্নির্মাণের প্রয়োজন কেন?
পেট্র পেলার

আমি একই হতাশ ছিল . মাইএসকিউএল কেন টেবিলের সমস্ত সূচী পুনর্নির্মাণ করে? উপরে বর্ণিত বক্তব্যটি কি সঠিক?
maj

13

এটি যখন সাধারণীকরণের বিধি লঙ্ঘন করে তখন এটি অনেক বেশি। আপনি যদি আপনার ডেটাবেসকে সাধারণীকরণ করেন তবে এতগুলি কলামগুলি পাওয়া বেশ শক্ত। কোনও নির্দিষ্ট ডিবি প্ল্যাটফর্মের জন্য অনুকূলিতকরণ সম্পর্কিত কোনও কৃত্রিম নিয়ম বা ধারণার আশেপাশে নয়, সমস্যার মডেল করার জন্য আপনার ডাটাবেসটি ডিজাইন করুন।

প্রশস্ত টেবিলটিতে নিম্নলিখিত নিয়মগুলি প্রয়োগ করুন এবং আপনার একক সারণীতে সম্ভবত কম কলাম থাকবে।

  1. পুনরাবৃত্তিকারী উপাদান বা উপাদানগুলির গোষ্ঠী নেই
  2. সংক্ষিপ্ত কীটিতে কোনও আংশিক নির্ভরতা নেই
  3. অ-কী বৈশিষ্ট্যগুলির উপর কোনও নির্ভরতা নেই

আপনাকে পাশাপাশি সহায়তা করার জন্য এখানে একটি লিঙ্ক দেওয়া আছে।


17
It is pretty hard to get that many columns if you are normalizing your database.মনে হয় না হিসাবে হার্ড।
পেট্র পেলার

5
অবশ্যই যে হার্ড না। এই সমস্ত অংশগুলির চারপাশে লোকেরা স্বাভাবিক ফর্মগুলি সত্যই বুঝতে পারে বলে মনে হয় না। আপনার 10000 কলাম থাকতে পারে এবং এখনও স্বাভাবিক করা যায় (এমনকি সর্বোচ্চ সাধারণ ফর্ম পর্যন্ত)।
হেজাজমান

2
@ ফোলজস এবং ঠিক সেখানেই ডেনোরালাইজেশনের গ্রহণযোগ্য অনুশীলনটি আসবে you're আপনি যদি কোনও চৌরাস্তাতে এসে থাকেন এবং কোনও গাড়ি আপনার মধ্যে প্রবেশ করতে চলেছে তবে আলো সবুজ হয়ে যাওয়ার জন্য অপেক্ষা করা বোকামি। আপনাকে পথ থেকে বেরিয়ে যেতে হবে। রেড লাইটের মধ্য দিয়ে যাওয়ার সময় প্রযুক্তিগতভাবে আইনী নাও হতে পারে, পরিস্থিতি =
অস্বীকৃতি

3
আপনি যখন গাড়ী সম্পর্কে কথা বলতে শুরু করেছিলেন তখন আপনি আমাকে হারিয়েছিলেন। প্রাসঙ্গিকতা কী তা কোনও ধারণা নেই।
জনএফএক্স

2
যাইহোক, আপনি কীভাবে একক ডেটা টেবিলের সাহায্যে এই দৃশ্যে জটিল প্রশ্নগুলি করেন, আপনি পারবেন না, এই কাজটি করার জন্য আপনাকে প্রচুর প্রোগ্রামিং ভাষা এবং বিভিন্ন স্টাফের বিভিন্ন উপায়ে নির্ভর করতে হবে! সুতরাং, আমি পাশাপাশি 170 টি কলাম সহ একটি টেবিল রাখাতে ফিরে যেতে পারি, কারণ "যোগদান" কোয়েরি এবং অতিরিক্ত জটিল প্রোগ্রামিংয়ের জন্য যা পৃথক টেবিলগুলি তৈরি করার প্রয়োজন হয় তা আমার কাছে সময়ের অপচয় বলে মনে হয়। আমি অনুমান করি আমি কেআইএসএস নীতিটির একটি বড় অনুরাগী।
ভ্লাদ ভ্লাদিমির হারকিউলিস 15

0

এটি কোনও সমস্যা নয় যতক্ষণ না সমস্ত বৈশিষ্ট্য একই সত্তার অন্তর্ভুক্ত এবং একে অপরের উপর নির্ভর না করে। জীবনকে আরও সহজ করতে আপনার এতে JSON অ্যারে সহ একটি পাঠ্য কলাম থাকতে পারে। স্পষ্টতই, প্রতিবার সমস্ত বৈশিষ্ট্য পাওয়ার ক্ষেত্রে আপনার যদি সমস্যা না হয়। যদিও এটি কোনও আরডিবিএমএসে এটি সংরক্ষণের উদ্দেশ্যকে পুরোপুরি পরাভূত করবে এবং প্রতিটি ডাটাবেস লেনদেনকে ব্যাপকভাবে জটিল করে তুলবে। সুতরাং এটির প্রস্তাবিত পদ্ধতির পুরো ডেটাবেস জুড়ে অনুসরণ করা।


0

একই টেবিলের অনেক বেশি কলাম থাকায় প্রতিরূপেও বিশাল সমস্যা দেখা দিতে পারে। আপনার জানা উচিত যে মাস্টারে ঘটে যাওয়া পরিবর্তনগুলি দাসের প্রতিরূপ হবে .. উদাহরণস্বরূপ, আপনি যদি সারণীতে একটি ক্ষেত্র আপডেট করেন তবে পুরো সারিটি ডাব্লু

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.