কোনও টেবিল থেকে শেষ সারিটি আনার দ্রুততম উপায় কী?


11

Pricesকলামগুলি সহ আমার একটি পোস্টগ্রিজ এসকিউএল টেবিল রয়েছে:

  • price (ডেসিমাল)
  • product_id (Int)

এছাড়াও created_atএবং updated_atকলাম আছে।

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

নির্দিষ্ট পণ্যের জন্য শেষ দাম পাওয়ার সবচেয়ে কার্যকর উপায় কী:

  • সূচি product_idএবং শেষ রেকর্ডের জন্য ক্যোয়ারী
  • activeসর্বশেষ মূল্য চিহ্নিত করতে এবং একটি যৌগিক সূচক তৈরি করতে ( product_idএবং active) একটি তৃতীয় কলাম যুক্ত করুন (বুলিয়ান )
  • অথবা অন্য কিছু?

4
শর্তের সাথে আংশিক সূচক ব্যবহার করা where activeসম্ভবত সর্বশেষতম পণ্যটি পুনরুদ্ধারে আরও বেশি সহায়তা করবে।
a_horse_with_no_name

উত্তর:


11

সমাধান ছাড়াই প্রোডাক্ট_আইডিতে আপনার একটি সূচি প্রয়োজন index

আপনি যদি আপডেট_এল কলামে একটি সূচক রেখে থাকেন তবে আপনার যে কথাটি বলা হয়েছে তা হ'ল "একটি নির্দিষ্ট পণ্য" আনতে হবে তবে আমি করব:

select *
from Prices
where product_id = ?
order by updated_at desc 
limit 1

তবে যদি আমি যে ফলাফলটি চেয়েছিলাম সেগুলি না পেয়ে বা যদি আমার অনেক পণ্যগুলির বর্তমান মূল্য পাওয়ার প্রয়োজন হয়, তবে আমি একটি সক্রিয় কলাম যুক্ত করার বিকল্পটি চেষ্টা করব এবং এটি করার সময় নতুনটি ছাড়া অন্য সমস্ত মূল্যের জন্য এটি এন এ সেট করার চেষ্টা করব doing দামগুলির আপডেট এবং তারপরে আমি একটি আংশিক সূচক তৈরি করব যেখানে a_horse_with_no_name দ্বারা প্রস্তাবিত সক্রিয়। আমি কেবল সেখানে যেতে চাই যখন এটি পূর্বের দামের সারিগুলি সক্রিয় না হওয়ার জন্য আপডেট করার জটিলতার একটি স্তর যুক্ত করেছে etc.


1
এই ক্যোয়ারির দক্ষ হতে (product_id, updated_at)- বা অন (product_id, updated_at DESC)- ইনডেক্স প্রয়োজন । শুধু না (updated_at)
ypercubeᵀᴹ

5

আপনার বাকী ডাটাবেস সম্পর্কে জ্ঞান ছাড়াই আপনি পণ্যের মূল্য আনতে গতি বাড়িয়ে তুলতে কিছুটা নরমাল ফর্ম বহন করতে পারবেন (ধরে নিবেন প্রতিটি আইটেমের জন্য একটি মূল্য রয়েছে)।

আপনার টেবিলটিতে last_priceপ্রকারের নামে একটি নতুন কলাম তৈরি করুন priceএবং আপনার productটেবিলে একটি ট্রিগার তৈরি AFTER INSERT ON EACH ROWকরুন price। প্রতিবার নতুন দাম তৈরি হওয়ার সময় এটি সর্বশেষ দামের সাথে সম্পর্কিত পণ্য আপডেট করে। এই উপায়ে, আপনি যখনই কোনও পণ্য আনেন, আপনি তার সর্বশেষ দামও আনেন।

সংস্করণ 9.3 থেকে, পোস্টগ্র্যাসকিউএল বস্তুগত দৃষ্টিভঙ্গি সমর্থন করে। লেখার জন্য একটি সাধারণ ফর্ম রাখা এবং পড়ার জন্য অস্বীকৃত দৃষ্টিভঙ্গি রেখে ডেটাটিকে অস্বীকৃত করার একটি দুর্দান্ত উপায়। পোস্টগ্রিসের তালিকা / বিজ্ঞপ্তি প্রক্রিয়া দ্বারা ভিউটির আপডেটটি ট্রিগার করা যেতে পারে।


-1

মূল্য সারণীতে আপনার কাছে তারিখ এবং সময়ের কলাম থাকতে হবে (এর সাথে কার্যকরভাবে) মূল্য সারণীতে। মূল্য আপডেট করার সময় ব্যবহারকারী তার মান প্রবেশ করবে। এর পরে কেবল ডেস্ক ওয়েফ সীমা 1 দিয়ে মানটি আনুন।


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