"সীমাবদ্ধ 1000,25" বনাম "সীমা 25 অফসেট 1000"


11

সম্প্রতি আমি জানতে পেরেছি যে মাইএসকিউএলের একটি offsetবৈশিষ্ট্য রয়েছে। আমি অফসেটের ফলাফলগুলি, বা অফসেট এবং সীমা বৈকল্পিকের মধ্যে পার্থক্য সম্পর্কে ডকুমেন্টেশন সন্ধান করার চেষ্টা করেছি, তবে আমি যা খুঁজছি তা খুঁজে পাচ্ছি না।

বলি আমার একটি টেবিলে 10.000 সারি রয়েছে এবং আমি সারি 1.000 থেকে 25 টি ফলাফল চাই। আমি এ পর্যন্ত যতটা পেলাম, একই ফল পেতে আমি উভয়ই করতে পারলাম:

SELECT id,name,description FROM tablename LIMIT 1000,25
SELECT id,name,description FROM tablename LIMIT 25 OFFSET 1000

আমি যা জানতে চাই তা হ'ল দুজনের মধ্যে পার্থক্য।

  • এটি কি আসলে একই কাজ করে বা আমার বোঝাটি ভুল?
  • বৃহত্তর টেবিলগুলিতে এক ধীর / দ্রুত
  • আমি যখন করি তখন অফসেটের ফলাফল কি পরিবর্তন হয় WHERE column=1(বলুন কলামটিতে> 100 টি আলাদা মান রয়েছে)
  • আমি যখন করি তখন অফসেটের ফলাফল কি পরিবর্তিত হয় ORDER BY column ASC(মনে করি এটির এলোমেলো মান রয়েছে)

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


মাইএসকিউএল ডকুমেন্টেশন এটিকে পুরোপুরি ব্যাখ্যা করে। আপনি নিজে এটি দেখার জন্য আগ্রহী ছিলেন না এমন কোনও কারণ আছে কি?
স্যারাইড

1
"পোস্টগ্রেএসকিউএল এর সাথে সামঞ্জস্যের জন্য, মাইএসকিউএল লিমিট সারি_কাউন্ট অফসেট সিনট্যাক্স সমর্থন করে" " ( dev.mysql.com/doc/refman/5.5/en/select.html থেকে )।
স্যারাইড

কারণ এটি এখনও আমার প্রশ্নের উত্তর দেয় না। আপনার উক্তিটি (এবং পৃষ্ঠায় তাদের পাঠ্য) থেকে আমার উপসংহারটি উচিৎ উচিত যে অফসেটটি সীমা হিসাবে একই জিনিস, কেবল ভিন্নভাবে লেখা হয়েছে, যেন এলএমটি সংক্ষিপ্ত নির্বাচক?
মার্টিজন

1
এটি একই জিনিস প্রকাশ করার জন্য বিভিন্ন বাক্য গঠন। আপনার অন্যান্য উপ প্রশ্নগুলি শিরোনাম এবং আপনার পোস্টের প্রথম অংশ থেকে সম্পূর্ণ পৃথক।
স্যারাইড

1
আমি বুঝতে পারি যে এটি যদি একই জিনিস হয় তবে অন্য প্রশ্নগুলি উভয় পরিস্থিতিতেই আলাদাভাবে প্রভাবিত হবে না। আমি কেবল নিশ্চিত হলাম না যে এটি একই জিনিস ছিল, এটিই আমি উত্তর খুঁজছিলাম, ধন্যবাদ।
মার্টিজন

উত্তর:


9

পরিচালনার ক্ষেত্রে

SELECT id,name,description FROM tablename LIMIT 1000,25
SELECT id,name,description FROM tablename LIMIT 25 OFFSET 1000

বিবৃতিতে একেবারেই কোনও পার্থক্য নেই

@ স্যারাইডের মন্তব্য ঠিক পয়েন্ট point

LIMIT 1000,25 মানে LIMIT 25 OFFSET 1000

একই ডকুমেন্টেশন থেকে

LIMIT row_count সমতুল্য LIMIT 0, row_count

আপনার প্রকৃত প্রশ্ন

  • এটি কি আসলে একই কাজ করে বা আমার বোঝাটি ভুল?
  • বৃহত্তর টেবিলগুলিতে এক ধীর / দ্রুত

যেহেতু উভয় প্রশ্ন একই, তাই কোনও পার্থক্য নেই

  • আমি যেখানে কলাম কলাম = 1 করলে অফসেটের ফলাফল পরিবর্তন হবে (বলুন কলামটিতে> 100 টি আলাদা মান রয়েছে)
  • আমি যখন কলাম এএসসি দ্বারা অর্ডার করি তখন অফসেটের ফলাফল কি পরিবর্তিত হয় (মনে হয় এটির এলোমেলো মান রয়েছে)

ব্যবহারের LIMITফলে কোনও ফলাফলের সেট পরিবর্তন হয় না। এগুলি কেবল ফলাফল সেটের মধ্যে নেভিগেট করে।

এই জিজ্ঞাসা

SELECT id,name,description FROM tablename ORDER BY id LIMIT 1000,25

থেকে আলাদা হবে

SELECT * FROM (SELECT id,name,description FROM tablename LIMIT 1000,25) A ORDER BY id;

কারণ এলিমিটটি অন্য পর্যায়ে প্রয়োগ করা হচ্ছে।

টেবিলনামে কম 1000 টি সারি থাকলে প্রথম ক্যোয়ারী কিছুই দেয় না

সাবকিউরিতে কম 1000 সারি থাকলে দ্বিতীয় ক্যোয়ারী কিছুই দেয় না

উপসংহার

আপনি সঠিক পর্যায়ে ডেটা বাছাই করছেন তা নিশ্চিত করার জন্য আপনাকে ক্যোয়ারীটি স্কাল্প্ট করতে হবে


1
ধন্যবাদ. এটি: "বিবৃতিগুলির মধ্যে একেবারেই কোনও পার্থক্য নেই" ঠিক আমি যা খুঁজছিলাম তা ছিল, এবং সেই বিট তথ্যের সাহায্যে আমি দেখতে পাচ্ছি যে বাছাই করা বা কোথায় গুরুত্বপূর্ণ নয়। এটি একই জিনিস ছিল তার সম্পর্কে নিশ্চিত ছিল না, এবং কোডটি শয়তান বিশদে রয়েছে, আমি নিশ্চিতভাবে জানতে চাই :)
মার্টিজন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.