এসকিউএল সার্ভার ২০০৮ তারিখের সময় সূচি কার্য সম্পাদন বাগ


11

আমরা এসকিউএল সার্ভার ২০০৮ আর 2 ব্যবহার করছি, এবং একটি প্রাথমিক আইডি সূচক সহ একটি খুব বড় (100 datetimeএম + সারি) টেবিল এবং একটি অবিচ্ছিন্ন সূচক সহ একটি কলাম রয়েছে। আমরা নির্দিষ্টভাবে একটি সূচকযুক্ত ডেটটাইম কলামে একটি order byধারা ব্যবহারের উপর ভিত্তি করে কিছু অতি অস্বাভাবিক ক্লায়েন্ট / সার্ভার আচরণ দেখছি ।

আমি নিম্নলিখিত পোস্টটি পড়েছি: /programming/1716798/sql-server-2008-ordering-by-datetime-is-too-slow তবে ক্লায়েন্ট / সার্ভারের সাথে আরও কিছু চলছে এখানে বর্ণিত শুরু।

আমরা যদি নিম্নলিখিত কোয়েরি চালিত করি (কিছু সামগ্রী রক্ষা করতে সম্পাদিত):

select * 
from [big table] 
where serial_number = [some number] 
order by test_date desc

ক্যোয়ারী প্রতিবার সময় বেরিয়ে যায়। এসকিউএল সার্ভার প্রোফাইলার এ কার্যকর করা ক্যোয়ারী সার্ভারের মতো দেখাচ্ছে:

exec sp_cursorprepexec @p1 output,@p2 output,NULL,N'select * .....

এখন আপনি যদি ক্যোয়ারীটি এখানে পরিবর্তন করেন তবে এটি বলুন:

declare @temp int;
select * from [big table] 
where serial_number = [some number] 
order by test_date desc

এসকিউএল সার্ভার প্রোফাইলার মৃত্যুদন্ডপ্রাপ্ত ক্যোয়ারীটিকে সার্ভারের মতো দেখায় এবং এটি তাত্ক্ষণিকভাবে কাজ করে:

exec sp_prepexec @p1 output, NULL, N'declare @temp int;select * from .....

প্রকৃতপক্ষে, আপনি অব্যবহৃত ঘোষণাপত্রের পরিবর্তে একটি খালি মন্তব্য ('-;') দিতে পারেন এবং একই ফলাফল পেতে পারেন। সুতরাং প্রথমদিকে আমরা এসপি প্রসেসরটিকে এই সমস্যার মূল কারণ হিসাবে চিহ্নিত করছিলাম তবে আপনি যদি এটি করেন:

select * 
from [big table] 
where serial_number = [some number] 
order by Cast(test_date as smalldatetime) desc

এটি তাত্ক্ষণিকভাবেও কাজ করে (আপনি এটি অন্য কোনও datetimeধরণের হিসাবে কাস্ট করতে পারেন ), ফলটি মিলি সেকেন্ডে ফেরত দেয়। এবং প্রোফাইলারটি সার্ভারের কাছে অনুরোধটি এইভাবে দেখায়:

exec sp_cursorprepexec @p1 output, @p2 output, NULL, N'select * from .....

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

আমরা এই সমস্যাটি সম্পর্কে বেশ খানিকটা চেষ্টা করেছি এবং আমি অন্যদের কাছ থেকে পোস্ট করা অনুরূপ সমস্যাগুলি দেখতে পাচ্ছি, তবে এটিকে এই স্তরে ভেঙে দেবে না।

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

সম্পাদনা:

আমারও যুক্ত করা উচিত forceseekযাতে সমস্যাটি অদৃশ্য হয়ে যায়।

অনুসন্ধানকারীদের সাহায্য করার জন্য আমার যোগ করা উচিত, ওডিবিসি সময়সীমা ত্রুটিটি নিক্ষেপ করা হয়েছে: [মাইক্রোসফ্ট] [ওডিবিসি এসকিউএল সার্ভার ড্রাইভার] অপারেশন বাতিল হয়েছে

যোগ করা হয়েছে 10/12/2012: এখনও মূল কারণটি খুঁজে নিচ্ছেন, (মাইক্রোসফ্টকে দেওয়ার জন্য একটি নমুনা তৈরি করার পাশাপাশি, আমি জমা দেওয়ার পরে এখানে কোনও ফলাফল পোস্ট করব)। আমি একটি ওয়ার্কিং কোয়েরি (একটি অতিরিক্ত মন্তব্য / ঘোষণার বিবৃতি সহ) এবং অ-কার্যকারী ক্যোয়ারির মধ্যে ওডিবিসি ট্রেস ফাইলটিতে খনন করছি। মৌলিক ট্রেস পার্থক্য নীচে পোস্ট করা হয়। এটি এসকিউএলএক্সটেন্ডেডফ্যাচ কলটিতে এসকিউএলবাইন্ডকলকের সমস্ত আলোচনা শেষ হওয়ার পরে ঘটে। কলটি রিটার্ন কোড -1 দিয়ে ব্যর্থ হয় এবং প্যারেন্ট থ্রেড তখন এসকিউএলস্যান্সলে প্রবেশ করে। যেহেতু আমরা নেটিভ ক্লায়েন্ট এবং লেগ্যাসি ওডিবিসি উভয় ড্রাইভারের সাথে এটি উত্পাদন করতে সক্ষম, আমি এখনও সার্ভার সাইডের কিছু সামঞ্জস্যতার ইশারা করছি।

(clip)
MSSQLODBCTester 1664-1718   EXIT  SQLBindCol  with return code 0 (SQL_SUCCESS)
        HSTMT               0x001EEA10
        UWORD                       16 
        SWORD                        1 <SQL_C_CHAR>
        PTR                0x03259030
        SQLLEN                    51
        SQLLEN *            0x0326B820 (0)

MSSQLODBCTester 1664-1718   ENTER SQLExtendedFetch 
        HSTMT               0x001EEA10
        UWORD                        1 <SQL_FETCH_NEXT>
        SQLLEN                     1
        SQLULEN *           0x032677C4
        UWORD *             0x032679B0

MSSQLODBCTester 1664-1fd0   ENTER SQLCancel 
        HSTMT               0x001EEA10

MSSQLODBCTester 1664-1718   EXIT  SQLExtendedFetch  with return code -1 (SQL_ERROR)
        HSTMT               0x001EEA10
        UWORD                        1 <SQL_FETCH_NEXT>
        SQLLEN                     1
        SQLULEN *           0x032677C4
        UWORD *             0x032679B0

        DIAG [S1008] [Microsoft][ODBC SQL Server Driver]Operation canceled (0) 

MSSQLODBCTester 1664-1fd0   EXIT  SQLCancel  with return code 0 (SQL_SUCCESS)
        HSTMT               0x001EEA10

MSSQLODBCTester 1664-1718   ENTER SQLErrorW 
        HENV                0x001E7238
        HDBC                0x001E7B30
        HSTMT               0x001EEA10
        WCHAR *             0x08BFFC5C
        SDWORD *            0x08BFFF08
        WCHAR *             0x08BFF85C 
        SWORD                      511 
        SWORD *             0x08BFFEE6

MSSQLODBCTester 1664-1718   EXIT  SQLErrorW  with return code 0 (SQL_SUCCESS)
        HENV                0x001E7238
        HDBC                0x001E7B30
        HSTMT               0x001EEA10
        WCHAR *             0x08BFFC5C [       5] "S1008"
        SDWORD *            0x08BFFF08 (0)
        WCHAR *             0x08BFF85C [      53] "[Microsoft][ODBC SQL Server Driver]Operation canceled"
        SWORD                      511 
        SWORD *             0x08BFFEE6 (53)

MSSQLODBCTester 1664-1718   ENTER SQLErrorW 
        HENV                0x001E7238
        HDBC                0x001E7B30
        HSTMT               0x001EEA10
        WCHAR *             0x08BFFC5C
        SDWORD *            0x08BFFF08
        WCHAR *             0x08BFF85C 
        SWORD                      511 
        SWORD *             0x08BFFEE6

MSSQLODBCTester 1664-1718   EXIT  SQLErrorW  with return code 100 (SQL_NO_DATA_FOUND)
        HENV                0x001E7238
        HDBC                0x001E7B30
        HSTMT               0x001EEA10
        WCHAR *             0x08BFFC5C
        SDWORD *            0x08BFFF08
        WCHAR *             0x08BFF85C 
        SWORD                      511 
        SWORD *             0x08BFFEE6
(clip)

একটি মাইক্রোসফ্ট কানেক্ট কেস 10/12/2012 যুক্ত হয়েছে:

https://connect.microsoft.com/SQLServer/feedback/details/767196/order-by-datetime-in-odbc-fails-for-clean-sql-statements#details

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


আপনি যদি চেষ্টা করেন তবে কি হবে select id, test_date from [big table] where serial_number = ..... order by test_date- আমি কেবল ভাবছি যে SELECT *এটির দ্বারা আপনার পারফরম্যান্সের নেতিবাচক প্রভাব ফেলবে। আপনার যদি একটি অবিবাহিত সূচক চালু থাকে test_dateএবং একটি ক্লাস্টারড ইনডেক্স থাকে id(ধরে নেওয়া যায় এটিই ধরে নেওয়া হয়), এই ক্যোয়ারীটি সেই নন-ক্ল্লাস্টার্ড সূচক দ্বারা আচ্ছাদিত করা উচিত এবং এভাবে খুব দ্রুত ফিরে আসা উচিত
marc_s

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

আমি আমার অ্যাকাউন্টগুলি এখন সেই সাইটে লিঙ্ক করেছি। কোনও মডারেটর যদি সেই পোস্টটিতে পোস্টটি সরিয়ে নিতে চায় তবে আমি যেভাবেই ভাল আছি। আমার এক বিকাশকারী আমার এখানে পোস্ট করার পরে সেই সাইটটি আমাকে দেখিয়েছিল।
DBtheDBA

এখানে কোন ক্লায়েন্ট স্ট্যাক ব্যবহার করা হচ্ছে? পুরো ট্রেস টেক্সট ব্যতীত, এটি সমস্যার মতো মনে হচ্ছে। মূল কলটি ভিতরে insideেকে রাখার চেষ্টা করুন sp_executesqlএবং দেখুন কী ঘটে।
জন সেগেল

1
ধীর মৃত্যুদন্ড কার্যকর করার পরিকল্পনাটি কেমন দেখাচ্ছে? পরামিতি শুঁকছে?
মার্টিন স্মিথ

উত্তর:


6

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

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


আমি এখানে কিছুটা বিভ্রান্ত। পরিকল্পনাটি the orderকী দফা দ্বারা ভিত্তি করে করা হবে ? whereক্রমগুলি শর্তগুলির মধ্যে সীমাবদ্ধ করা উচিত নয় কেননা কেবল সারিগুলি আনার পরে অর্ডারিং হওয়া উচিত? সার্ভার কেন সম্পূর্ণ ফলাফল সেট হওয়ার আগে রেকর্ডগুলি চেষ্টা করে বাছাই করে?
ডিবিথডিবিএ

5
এটিও ব্যাখ্যা করে না যে কেন ক্যোয়ারির শুরুতে একটি মন্তব্য যুক্ত করা রান সময়কালকে প্রভাবিত করে।
সিএফ্রেডেনবার্গ

এছাড়াও, আমাদের টেবিলগুলি প্রায় সবসময় সিরিয়াল নম্বর দ্বারা অনুসন্ধান করা হয়, টেস্ট_ডেট নয়। আমাদের উভয়টিতে নন-ক্লাস্টারযুক্ত সূচি রয়েছে এবং কেবল টেবিলে আইডি কলামে একটি ক্লাস্টার রয়েছে। এটি একটি অপারেশনাল ডেটা স্টোর এবং অন্যান্য কলামগুলিতে ক্লাস্টারযুক্ত সূচকগুলি যুক্ত করা কেবল পৃষ্ঠ বিভক্তকরণ এবং দরিদ্র কর্মক্ষমতা চালিত করবে।
DBtheDBA

1
@ ডিবিথডিবিএ: আপনি যদি 'বাগের' জন্য দাবি করতে চান তবে আপনার যথাযথ তদন্ত এবং প্রকাশ করা দরকার। সঠিক আপনার টেবিল এবং রপ্তানি পরিসংখ্যান স্কিমা অনুসরণ কিভাবে SQL সার্ভার 2005 সার্ভার 2008 এবং SQL এর যে একটি পরিসংখ্যান শুধুমাত্র ডাটাবেস তৈরি করতে প্রয়োজনীয় ডেটাবেস মেটাডেটা একটি স্ক্রিপ্ট তৈরি করতে বিশেষভাবে সকল গুরুত্বপূর্ণ, স্ক্রিপ্ট পরিসংখ্যান : স্ক্রিপ্ট পরিসংখ্যান এবং histograms । সমস্যাগুলি পুনরুত্পাদনকারী পদক্ষেপের সাথে পোস্টের তথ্যে এগুলি যুক্ত করুন।
রিমাস রুসানু

1
আমাদের অনুসন্ধানের সময় আমরা এটি পড়েছিলাম এবং আপনি কী বলছেন তা আমি বুঝতে পেরেছি তবে সার্ভার এখানে কিছু করছে তার মধ্যে একটি মৌলিক ত্রুটি রয়েছে। আমরা টেবিলটি এবং সূচিগুলি পুনরায় তৈরি করেছি এবং এটি একটি নতুন টেবিলে পুনরুত্পাদন করেছি। রিকম্পাইল অপশনটি সমস্যার সমাধান করে না, যা কিছু বড় সমস্যা। আমি সন্দেহ করি না যে সমস্ত কিছুর উপরে ক্লাস্টারড ইনডেক্সগুলি স্থাপন করা এই সমস্যাটি সম্ভবত সম্ভাব্য সমাধান করতে পারে তবে এটি মূল কারণগুলির সমাধান নয়, এটি একটি কর্মচঞ্চল, এবং একটি বড় টেবিলে একটি ব্যয়বহুল।
ডিবিথডিবিএ

0

কীভাবে ত্রুটিটি পুনরুত্পাদন করতে হবে এবং কানেক্ট.মাইক্রোসফট.কম এ এটি জমা দিতে হবে তার বিশদ নথি করুন। আমি যাচাই করেছিলাম এবং এর সাথে সম্পর্কিত এমন কিছু ইতিমধ্যে সেখানে দেখতে পেলাম না।


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

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

0

আমার হাইপোথিসিসটি হ'ল আপনি কোয়েরি প্ল্যান ক্যাশে সম্পূর্ণ চালিয়ে যাচ্ছেন। (রিমাস সম্ভবত আমার মতো একই কথা বলছে, তবে অন্যভাবে।

এসকিউএল ক্যাশে করার পরিকল্পনা কী করে সে সম্পর্কে এখানে বিশদ বিবরণ ।

বিশদটি নিয়ে চকচকে: কেউ কোনও নির্দিষ্ট [কিছু সংখ্যার] জন্য আগে এই ক্যোয়ারী চালিয়েছিল। এসকিউএল প্রদত্ত মান, সূচিপত্র এবং প্রাসঙ্গিক টেবিল / কলাম ইত্যাদির পরিসংখ্যান ইত্যাদির দিকে নজর রেখে একটি পরিকল্পনা তৈরি করেছিল যা সেই নির্দিষ্ট [কিছু সংখ্যার] জন্য ভাল কাজ করেছিল। এরপরে এটি পরিকল্পনাটি ক্যাশে করে, এটি চালিয়ে যায় এবং ফলাফলকে কলারকে ফিরিয়ে দেয়।

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

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

একটি তাত্পর্যপূর্ণ উদাহরণ: [জনগণ] থেকে * নির্বাচন করুন যেখানে শেষ নাম = 'স্মিথ' - মার্কিন যুক্তরাষ্ট্রে খুব জনপ্রিয় শেষ নামটি যান [লোকেদের] থেকে বেছে নিন * যেখানে লাস্টনাম = 'বোনাਾਰ্ট' - মার্কিন যুক্তরাষ্ট্রে জনপ্রিয় নাম নেই

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

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

এটি পরীক্ষা করতে, ক্যোয়ারিতে একটি অযৌক্তিক পরিবর্তন করুন, যেমন ফর এবং টেবিলের নামের মধ্যে কিছু স্পেস যুক্ত করুন, বা শেষে মন্তব্য করুন। এটা কি দ্রুত? যদি তা হয় তবে এর কারণ এই ক্যোয়ারী ক্যাশেতে থাকা থেকে কিছুটা আলাদা, সুতরাং এসকিউএল এটি "নতুন" অনুসন্ধানগুলির জন্য যা করেছে did

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

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

যদি এটি সাহায্য না করে, তৃতীয় জিনিসটি চেষ্টা করার জন্য প্রতিবার আপনি যখন স্টেটমেন্টটি চালাবেন তখনই নতুন পরিকল্পনাটি বাধ্যতামূলক করুন, কীওয়ার্ডটি ব্যবহার করুন:

[বড় টেবিল] থেকে * নির্বাচন করুন যেখানে সিরিয়াল_ নাম্বার = [কিছু সংখ্যক] অর্ডার টেস্ট_ডেট ডেস্ক অপশন (পুনরায়)

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

আপনি " প্ল্যান গাইড " নামক বৈশিষ্ট্যটিও দেখে নিতে পারেন তবে এটি আরও জটিল এবং অতিরিক্ত ওভারকিল হতে পারে।


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