এসকিউএল ডাটাবেসে প্রাথমিক কী হিসাবে স্ট্রিং


178

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

উত্তর:


191

প্রযুক্তিগতভাবে হ্যাঁ, তবে যদি কোনও স্ট্রিং প্রাথমিক কী হিসাবে বিবেচনা করে তবে আপনার সম্ভবত এটি ব্যবহার করা উচিত। এটি সমস্ত আপনি যে টেবিলটি তৈরি করছেন তার আকার এবং প্রাথমিক কী হতে চলেছে এমন স্ট্রিংয়ের দৈর্ঘ্যের উপর নির্ভর করে (দীর্ঘতর স্ট্রিং == তুলনা করা আরও শক্ত)। কয়েক মিলিয়ন সারি রয়েছে এমন টেবিলের জন্য আমি স্ট্রিংটি অগত্যা ব্যবহার করব না, তবে ছোট টেবিলগুলিতে স্ট্রিং ব্যবহার করে যে পরিমাণ পারফরম্যান্স হ্রাস পাবে তা আপনার মাথা ব্যাথার চেয়ে কম হবে যা আপনার পূর্ণসংখ্যার সাথে পূর্ণসংখ্যার সাথে থাকতে পারে that ডেটা সম্পর্কিত কোনও অর্থ নয়।


11
এটি কি ডাটাবেসের উপর নির্ভর করবে না? আমি মনে করি সঠিকভাবে ইনডেক্সড স্ট্রিংটি যদি কোনও সংখ্যা থেকে মোটেও ধীর হয় না?
রায়ান গিল

2
আমি সম্মত হব অনেকগুলি ভেরিয়েবল বিবেচনা করতে হবে। (স্কেলসার্ভারে) আমরা মধ্য থেকে উচ্চ কিশোর এবং তারপরেও সূচীকরণের পরেও দৈর্ঘ্যের স্ট্রিংগুলি ব্যবহার করে বাস্তব পারফরম্যান্সের সমস্যাগুলি দেখেছি। উদাহরণস্বরূপ এই হার্ডওয়্যারটি কাটিয়ে ওঠার জন্য কিছু আছে ঠিক আছে Buy
kemiller2002

1
যথেষ্ট ফর্সা। আমি সম্মত হব যদিও কোনও স্ট্রিং যদি তা বোঝায়, আপনার ব্যবহার করা উচিত। আমি আরও বলব যে জিইউইডি বা ইউইউডি ফিল্ডসের ডেটাবেজে অবশ্যই একটি সময় রয়েছে যেখানে একটি স্বতঃসংশোধন ক্ষেত্র কাজ করবে না।
রায়ান গিল

7
এছাড়াও মনে রাখবেন যে সূচীকরণের তুলনা করার সময় প্রায়শই CHAR এবং VARCHAR এর মধ্যে অনেক বড় পার্থক্য থাকে
টম এইচ

7
এই উত্তরের মন্তব্যের সংখ্যা এটি পরিষ্কার করে দেয় যে এটি কতটা অসম্পূর্ণ। ইনডেক্সিং উল্লেখ করা সর্বনিম্ন গ্রহণযোগ্য উত্তর হত।
পেড্রো রোলো

74

স্ট্রিংগুলিকে প্রাথমিক কী হিসাবে ব্যবহার করার সাথে আরেকটি সমস্যা হ'ল কারণ সূচকে ক্রমাগত ক্রমানুসারে অর্ডার করা হয়, যখন একটি নতুন কী তৈরি করা হয় যা ক্রমের মাঝখানে থাকে যাতে সূচককে সাদৃশ্য করতে হয় ... আপনি যদি কোনও অটো ব্যবহার করেন তবে সংখ্যার পূর্ণসংখ্যা, নতুন কীটি সূচকের শেষের সাথে যুক্ত হয়েছে।


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

20
প্রাথমিক কীগুলি ক্লাস্টার করা হয়। আপনি এগুলিও অনাবৃত তৈরি করতে পারেন।
শিখছি

এক্সআইডিগুলি অর্ডার করা হয়েছে যা যদি আপনি কেবল xid স্ট্রিংগুলি ব্যবহার করেন
সিনিস্টেস্টিক

22

একটি ক্লাস্টার ইনডেক্স থাকা সারণীতে সন্নিবেশ করানো হয় যেখানে সিকোয়েন্সের মাঝখানে সন্নিবেশ ঘটে সূচিটি পুনরায় লেখার কারণ হয় না। এটি ডেটা সমন্বিত পৃষ্ঠাগুলি পুনরায় লেখার কারণ হয় না। সারিটি যেখানে যাবে সেই পৃষ্ঠাটিতে যদি জায়গা থাকে, তবে এটি সেই পৃষ্ঠাতে স্থাপন করা হবে। পৃষ্ঠায় ডান জায়গায় সারি রাখার জন্য একক পৃষ্ঠা পুনরায় ফর্ম্যাট করা হবে। পৃষ্ঠাটি পূর্ণ হলে পৃষ্ঠার উপরের সারিগুলির অর্ধেক এক পৃষ্ঠায় যাবে এবং অর্ধেক অংশ অন্য পৃষ্ঠায় যাবে a পৃষ্ঠাগুলি এরপরে পৃষ্ঠাগুলির লিঙ্কযুক্ত তালিকায় পুনরায় সংযুক্ত করা হয় যা ক্লাস্টার ইনডেক্সযুক্ত একটি টেবিলের ডেটা অন্তর্ভুক্ত করে। সর্বাধিক, আপনি ডাটাবেসের 2 পৃষ্ঠাগুলি লেখা শেষ করবেন।


ভাল ব্যাখ্যা। তবে এটি কি সমস্ত এসকিউএল ডাটাবেসের জন্য সত্য? র্যান্ডম ইউআইইডিটিকে প্রাথমিক কী হিসাবে ব্যবহার করার সময় আমি মাইএসকিউএল কর্মক্ষমতা সংক্রান্ত সমস্যার কথা শুনেছি।
hgoebl

13

স্ট্রিংগুলি যোগ দিতে ধীরে ধীরে এবং বাস্তব জীবনে এগুলি খুব কমই সত্যিই অনন্য হয় (এমনকি যখন তাদের ধারণা করা হয়)। একমাত্র সুবিধা হ'ল আপনি যদি নামটি জানাতে কেবল প্রাথমিক টেবিলে যোগ দিচ্ছেন তবে তারা যোগদানের সংখ্যা হ্রাস করতে পারে। তবে স্ট্রিংগুলিও প্রায়শই পরিবর্তনের বিষয় হয় যখন কোম্পানির নাম পরিবর্তন হয় বা ব্যক্তি বিবাহিত হয় তখন সম্পর্কিত সমস্ত রেকর্ড ঠিক করার সমস্যা তৈরি করে। এটি একটি বিশাল পারফরম্যান্স হিট হতে পারে এবং যদি কোনওভাবে সম্পর্কিত হওয়া সমস্ত টেবিলগুলি যদি সম্পর্কিত না হয় (এটি আপনি যা ভাবেন তার চেয়ে বেশি প্রায়ই ঘটে) তবে আপনার সাথে ডেটা মেলেনি। একটি পূর্ণসংখ্যা যা কখনই রেকর্ডের জীবনে পরিবর্তিত হয় না তা ডেটা অখণ্ডতার দৃষ্টিকোণ এবং পাশাপাশি পারফরম্যান্সের দৃষ্টিকোণ থেকে অনেক বেশি নিরাপদ পছন্দ। প্রাকৃতিক কীগুলি সাধারণত ডেটা রক্ষণাবেক্ষণের জন্য খুব ভাল হয় না।

আমি আরও উল্লেখ করতে চাই যে উভয় বিশ্বের সেরা হ'ল প্রায়শই পিকে হিসাবে একটি স্বতঃসংশোধন কী (বা কিছু বিশেষ ক্ষেত্রে, একটি জিইউইডি) ব্যবহার করা হয় এবং তারপরে প্রাকৃতিক কীতে একটি অনন্য সূচক স্থাপন করা হয়। আপনি দ্রুত যোগদান করতে পারেন, আপনি সদৃশ রেকর্ড পাবেন না, এবং আপনাকে একটি মিলিয়ন শিশু রেকর্ড আপডেট করতে হবে না কারণ একটি সংস্থার নাম পরিবর্তিত হয়েছে।


26
স্ট্রিংগুলি যে পিকে-র পক্ষে ভাল প্রার্থী তাদের ডুপ্লিকেট নেই - অন্যথায় তারা কোনও পিকে প্রার্থী হতে পারে না। আইসিডি -9 কোড, দেশের কোড, ভিন # গুলি ভাবেন। প্রাকৃতিক কীগুলির সাথে সমস্যার উদাহরণ হিসাবে একটি নাম ব্যবহার করা বিপথগামী, কারণ তাদের কখনই প্রথম স্থানে প্রার্থী হওয়া উচিত নয়।
টম এইচ

6
@ টম এইচ: আইএসও কাউন্টি কোডগুলি পরিবর্তন করুন। [ en.wikedia.org/wiki/ISO_3166-1#Editions_and_changes ] সম্পর্কিত প্রশ্নের উত্তর হিসাবে বলেছে [ stackoverflow.com/questions/925266/… ] "প্রাথমিক
কেই

4
@ স্টিভস্নেপ: হ্যাঁ এবং সেই পরিবর্তনটি পরিচালনার জন্য আইএসও হ'ল বিশ্বস্ত সংস্থা। অন্যদিকে, যখন আপনার পূর্ণসংখ্যার মানগুলি অন্য কারও সাথে বাড়ানোর একঘেয়েমিক অনুক্রমের প্রয়োজন হয়, আপনি নিজেরাই আছেন;)
onedaywhen

1
আমি সম্মত হব যে নামগুলি জোরে চাবিকাঠি হিসাবে বিবেচনা করা হবে না, আমি কেবল ওমানের বার দেখেছি যখন তারা ছিল।
এইচএলজিইএম

1
@মনেদয়েন যখন পূর্ণসংখ্যার 2 মনোটোনিক ক্রমটি মার্জিং উপসর্গ বা প্রত্যয় মাধ্যমে খুব সহজেই সম্পন্ন হয় :)
স্টিভ স্নেপ

6

যতক্ষণ না আপনি প্রাথমিক কী হিসাবে ব্যবহার করেন তা যতক্ষণ না এটি অনন্য matter আপনি যদি গতি বা ভাল ডাটাবেস ডিজাইনের বিষয়ে চিন্তা করেন তবে যদি আপনি তথ্য প্রতিলিপি করার পরিকল্পনা না করেন তবে একটি জিইউডি ব্যবহার করুন।

এটি যদি অ্যাক্সেস ডাটাবেস বা কিছু ক্ষুদ্র অ্যাপ হয় তবে প্রকৃতপক্ষে কে যত্নশীল। আমি মনে করি যে আমাদের বেশিরভাগ বিকাশকারীরা পুরানো ইনট বা গাইডকে সামনের দিকে চড় মারার কারণ হ'ল প্রকল্পগুলি আমাদের উপর বাড়ার উপায় রাখে এবং আপনি নিজেকে বৃদ্ধির বিকল্পটি ছেড়ে যেতে চান।


5

অনেকগুলি ভেরিয়েবল। এটি টেবিলের আকার, সূচীগুলি, স্ট্রিং কী ডোমেনের প্রকৃতির উপর নির্ভর করে ...

সাধারণত , পূর্ণসংখ্যাগুলি দ্রুত হবে। তবে পার্থক্য কি যত্নের পক্ষে যথেষ্ট বড় হবে? এটা বলা কঠিন.

এছাড়াও, স্ট্রিংগুলি বেছে নেওয়ার জন্য আপনার প্রেরণাটি কী? সাংখ্যিক স্বয়ংক্রিয় বৃদ্ধি কী প্রায়ই এত হয় সহজ হিসাবে ভাল। এটি কি শব্দার্থবিজ্ঞান? কনভেনিয়েন্স? প্রতিলিপি / সংযোগ বিচ্ছিন্ন উদ্বেগ? আপনার উত্তর এখানে আপনার বিকল্পগুলি সীমাবদ্ধ করতে পারে। এটি আপনি ভুলে যাচ্ছেন এমন একটি তৃতীয় "হাইব্রিড" বিকল্প মনে রাখে: গাইডসমূহ।


এটি কোনও অর্থহীনতা নয়, আপনি কী বোঝাতে চাইছেন?
এইচএলজিইএম

@ এইচএলজিইএম: যদি আমি তাকে লেখার বিষয়টি বুঝতে পারি তবে তার অর্থ একটি প্রধান ডিবি দিয়ে ল্যাপটপে তৈরি রেকর্ডগুলি সিঙ্ক করার মতো।
জোয়েল কোহোর্ন

আমার অর্থ একই অস্তিত্বের সাথে আমার দুটি পৃথক ডাটাবেস রয়েছে, অবিচ্ছিন্ন স্টোরেজ উদ্দেশ্যে কেবলমাত্র একটি কম ঘন ঘন আপডেট হয়। যদি আমি ডাটাবেস এ-তে "ক্যালিফোর্নিয়ার" সত্তার জন্য কোয়েরি করি, আমি চাই এটি ডাটাবেস বিতে মূলত একই "ক্যালিফোর্নিয়া" হতে পারে
মেনারস্ট্রিংস

1
এবং এটি 'লাইক' যেমন ল্যাপটপে তৈরি করা রেকর্ডগুলি সিঙ্ক করে এটি একই সমস্যা: এক জায়গায় তৈরি করা রেকর্ডগুলি অন্য জায়গায় তৈরি রেকর্ডগুলির সাথে বিরোধ না করে। এখানে সম্ভাব্য সমাধান হ'ল গাইড কীগুলি।
জোয়েল কোহোর্ন

5

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

এই ক্ষেত্রে, প্রাকৃতিক প্রাথমিক কী হিসাবে স্ট্রিংয়ের সাথে যাওয়া প্রায় সর্বদা ভাল, আপনি যদি এটি বিশ্বাস করতে পারেন তবে provide স্ট্রিংটি যথাযথ সংক্ষিপ্ত হিসাবে যতক্ষণ না প্রায় 25 অক্ষর সর্বাধিক বলুন তা চিন্তা করবেন না। পারফরম্যান্সের দিক থেকে আপনি কোনও বড় দাম দেবেন না।

ডেটা এন্ট্রি ব্যক্তি বা স্বয়ংক্রিয় ডেটা উত্সগুলি সর্বদা অনুমিত প্রাকৃতিক কীটির জন্য কোনও মান সরবরাহ করে, বা কখনও কখনও বাদ দেওয়া হয়? এটা কি ইনপুট ডেটা মাঝে মাঝে ভুল? যদি তা হয় তবে ত্রুটিগুলি কীভাবে সনাক্ত এবং সংশোধন করা হয়?

প্রোগ্রামার এবং ইন্টারেক্টিভ ব্যবহারকারীরা কোয়েরিগুলি নির্দিষ্ট করে তারা কী চান তা পেতে প্রাকৃতিক কী ব্যবহার করতে সক্ষম হয়?

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


3

সূচকগুলি প্রচুর তুলনা বোঝায়।

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

কখনও কখনও, যদিও, কোনও string to numerical idটেবিলের সাথে অতিরিক্ত যোগ দেওয়ার চেয়ে প্রাথমিক কী হিসাবে স্ট্রিংটি ব্যবহার করা দ্রুত ।


2

হ্যাঁ, তবে আপনি যদি কয়েক মিলিয়ন সারি ব্যবহারের প্রত্যাশা না করেন তবে স্ট্রিং-ভিত্তিক কীটি ব্যবহার করবেন না কারণ এটি ধীরতর হয় সাধারণত "অকাল অপ্টিমাইজেশন"। সর্বোপরি, স্ট্রিংগুলি বড় সংখ্যা হিসাবে সংরক্ষণ করা হয় যখন সংখ্যা কীগুলি সাধারণত ছোট সংখ্যা হিসাবে সংরক্ষণ করা হয় as

তবে লক্ষ্য রাখার একটি বিষয় হ'ল যদি আপনার কোনও কীতে সূচকগুলি ক্লাস্টার করা থাকে এবং প্রচুর পরিমাণে সন্নিবেশগুলি করছেন যা সূচকে অ-অনুক্রমিক। লিখিত প্রতিটি লাইন সূচকে আবার লিখতে বাধ্য করবে। আপনি যদি ব্যাচের সন্নিবেশগুলি করছেন, এটি সত্যিই প্রক্রিয়াটি ধীর করতে পারে।


2

পিকে কলামগুলির জন্য পূর্ণসংখ্যার ব্যবহারের দুটি কারণ:

  1. আমরা পূর্ণসংখ্যার ক্ষেত্রের জন্য পরিচয় সেট করতে পারি যা স্বয়ংক্রিয়ভাবে বৃদ্ধি পেয়েছে।

  2. আমরা যখন পিকে তৈরি করি, তখন ডিবি একটি সূচক তৈরি করে (ক্লাস্টার বা নন ক্লাস্টার) যা টেবিলে সঞ্চিত হওয়ার আগে ডেটা বাছাই করে। কোনও পিকে পরিচয় ব্যবহার করে, অপ্টিমাইজারের রেকর্ড সংরক্ষণের আগে বাছাইয়ের ক্রমটি পরীক্ষা করা উচিত নয়। এটি বড় টেবিলে কর্মক্ষমতা উন্নত করে।


1

প্রাথমিক কী হিসাবে স্ট্রিং থাকার আপনার কারণ কী?

আমি কেবলমাত্র একটি স্বয়ংক্রিয় বর্ধক পূর্ণসংখ্যার ক্ষেত্রের প্রাথমিক কীটি সেট করব এবং স্ট্রিং ফিল্ডে একটি সূচক রেখে দেব।

আপনি যদি টেবিলে অনুসন্ধান করেন তবে সেগুলি তুলনামূলকভাবে দ্রুত হওয়া উচিত এবং আপনার সমস্ত যোগদান এবং স্বাভাবিক চেহারা আপগুলি তাদের গতিতে প্রভাব ফেলবে না।

আপনি যে পরিমাণ স্ট্রিং ফিল্ডকে ইনডেক্স করে তা নিয়ন্ত্রণ করতে পারেন। অন্য কথায়, আপনি যদি যথেষ্ট মনে করেন তবে আপনি "কেবলমাত্র প্রথম 5 টি অক্ষরকেই সূচক" বলতে পারেন। অথবা যদি আপনার ডেটা তুলনামূলকভাবে সমান হতে পারে তবে আপনি পুরো ক্ষেত্রটি সূচক করতে পারেন।


3
আমি মনে করি কোনও চাবিতে কোনও বুদ্ধি স্থাপন করা সমস্যার জন্য জিজ্ঞাসা করছে। তারা কি অনন্য থাকবে? তারা কি কেবল ক্লায়েন্টের সরানো শুরুতে রাজ্যের সংক্ষিপ্তসার সহ সমস্ত অ্যাকাউন্ট নম্বর শুরু করেছিল? কোনও ক্ষেত্র আপডেট করুন - কোনও সমস্যা নেই - অ্যাকাউন্ট নম্বর দ্বারা লিঙ্কযুক্ত সমস্ত টেবিল - কী গোলমাল।
জেফো

1
পিকে হিসাবে স্ট্রিং ব্যবহারের উদাহরণ সেটিংসের টেবিল হতে পারে। উদাহরণস্বরূপ সেটিংনামপিকে, আইসুউজারএডেবল, ইসকাস্টমার অ্যাডেবল ইত্যাদি ইত্যাদি আপনি যদি সেটিং আচরণটি পরিবর্তন করতে চান তবে "আপডেট আপডেট সেট ... WHERE सेटिंगNamePK = 'ডেইলি ওয়ার্কঅবিলিগেশন'" আইডির ব্যবহার এবং কোথাও আইডির ম্যাপিং সঞ্চয় করার চেয়ে অনেক সুন্দর। অবশ্যই আপনার একটি পূর্ণসংখ্যা পিকে থাকতে পারে এবং সেটিংসের নামটি অন্য একটি অনন্য কী হিসাবে থাকতে পারে।
মাংসপোস্পিকল

প্রাথমিক কীটি একটি স্ব-বর্ধিত পূর্ণসংখ্যার হিসাবে, সন্নিবেশগুলিও তাদের গতিতে অকার্যকর হওয়া উচিত নয়?
ডেনিস

কৌতূহলী রেলস ডেভসগুলির জন্য, এখানে সূচীটির দৈর্ঘ্য কীভাবে নির্দিষ্ট করা যায় তা এখানে । নোট করুন যে এসকিউএলাইট সূচী দৈর্ঘ্য সমর্থন করে না।
ডেনিস 17

1

পারফরম্যান্সের দৃষ্টিকোণ থেকে - হ্যাঁ স্ট্রিং (পিকে) যখন পূর্ণসংখ্যা (পিকে) ব্যবহার করে সম্পাদিত পারফরম্যান্সের তুলনায় কর্মক্ষমতাটি কমিয়ে দেয়, যেখানে পিকে ---> প্রাথমিক কী।

প্রয়োজনের দৃষ্টিকোণ থেকে - যদিও এটি আপনার প্রশ্নের অংশ না এখনও আমি উল্লেখ করতে চাই। যখন আমরা বিভিন্ন টেবিল জুড়ে বিশাল ডেটা পরিচালনা করি আমরা সাধারণত কোনও নির্দিষ্ট টেবিলের জন্য সেট করা যেতে পারে এমন কীগুলির সম্ভাব্য সেটটি সন্ধান করি। এটি মূলত কারণ অনেকগুলি সারণী রয়েছে এবং বেশিরভাগ প্রতিটি বা কিছু টেবিল কিছু সম্পর্কের (বিদেশী কী এর ধারণা) মাধ্যমে অন্যটির সাথে সম্পর্কিত হবে। সুতরাং আমরা সত্যই সবসময় একটি প্রাথমিক কী হিসাবে কোনও পূর্ণসংখ্যা চয়ন করতে পারি না, বরং আমরা সেই টেবিলগুলির জন্য প্রাথমিক কী হিসাবে 3, 4 বা 5 টি বৈশিষ্ট্যের সংমিশ্রণে যাই। এবং এই কীগুলি বিদেশী কী হিসাবে ব্যবহৃত হতে পারে যখন আমরা রেকর্ডগুলি অন্য কোনও টেবিলের সাথে সম্পর্কিত করব। এটি প্রয়োজনীয় হলে বিভিন্ন টেবিল জুড়ে রেকর্ডগুলি সম্পর্কিত করে তোলে।

সর্বোত্তম ব্যবহারের জন্য - আমরা সর্বদা 1 বা 2 স্ট্রিং বৈশিষ্ট্যের সাথে 1 বা 2 পূর্ণসংখ্যার সংমিশ্রণ করি তবে এটির প্রয়োজন হলে কেবল আবার again


0

ডাটাবেসে স্ট্রিং সম্পর্কিত একটি খুব বড় ভুল বোঝাবুঝি হতে পারে। প্রায় প্রত্যেকেই ভেবেছেন যে সংখ্যার ডাটাবেসের উপস্থাপনা স্ট্রিংয়ের চেয়ে বেশি কমপ্যাক্ট। তারা মনে করে যে ডিবি-এস সংখ্যায় মেমরি হিসাবে প্রদর্শিত হয়। কিন্তু এটি সত্যি না. বেশিরভাগ ক্ষেত্রে সংখ্যার প্রতিনিধিত্ব অন্য সংখ্যার মতো উপস্থাপনের মতো এ স্ট্রিংয়ের বেশি থাকে।

সংখ্যা বা স্ট্রিং ব্যবহারের গতি আরও বেশি নির্ভর করে ইনডেক্সিং এর পরে টাইপ নিজেই।


0

ডিফল্টরূপে ASPNetUserIds 128 চর স্ট্রিং এবং কার্যকারিতা ঠিক আছে fine

কী এমন রয়েছে সারণিতে অনন্য হওয়া থেকে এটি কী হওয়া উচিত। কারণটা এখানে;

প্রাথমিক স্ট্রিং কী = সঠিক ডিবি সম্পর্ক, 1 টি স্ট্রিং কী (প্রাথমিক) এবং 1 স্ট্রিং সূচক (প্রাথমিক)।

অন্যান্য বিকল্প একটি টিপিক্যাল int- এ চাবিকাঠি, কিন্তু যদি স্ট্রিং রয়েছে অনন্য হতে আপনি এখনও সম্ভবত যাচাই করতে কারণ নন-স্টপ প্রশ্নের একটি তালিকা যোগ করতে অথবা চেক এর অনন্য যে করতে হবে।

সুতরাং কোন int পরিচয় কী ব্যবহার করে = ভুল ডিবি সম্পর্ক, 1 টি কী (প্রাথমিক), 1 টি ইনড ইনডেক্স (প্রাথমিক), সম্ভবত একটি অনন্য স্ট্রিং সূচক, এবং ম্যানুয়ালি একই স্ট্রিংটি বৈধ করার জন্য উপস্থিত নেই (কোনও এসকিএল চেকের মতো কিছু হতে পারে) )।

প্রাথমিক কী জন্য একটি স্ট্রিং উপর কোন int ব্যবহার ভাল পারফরম্যান্স পেতে, STRING কখন রয়েছে অনন্য হতে, এটি একটি খুব অদ্ভুত অবস্থা হতে হবে। আমি সবসময় স্ট্রিং কী ব্যবহার করতে পছন্দ করি। আর একটি চলতি নিয়ম হিসাবে, একটি ডাটাবেস denormalize না যতক্ষণ না আপনি কি দরকার হয়।

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