sql সার্ভার স্থানিক সূচক কর্মক্ষমতা


14

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

বৃহত্তর অনুসন্ধানের ক্ষেত্রগুলিতে, WITH(INDEX(SIX_FT5))ক্যোরিয়াকে যথেষ্ট গতি কমিয়ে দেয় (0 সেকেন্ড থেকে 15+ সেকেন্ড)। ছোট অনুসন্ধানের অঞ্চলে, ঠিক এটির ঠিক বিপরীতে।

আমি যে পরীক্ষাগুলি দিয়ে পরীক্ষা করছি সেগুলির কয়েকটি এখানে:

ফাস্ট:

SELECT TOP(1000) * FROM [FT5] WHERE (shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1) 

মন্থর:

SELECT TOP(1000) * FROM [FT5] WITH(INDEX(SIX_FT5)) WHERE (shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1) 

কেউ কি জানেন এখানে কী চলছে?


আমি অন্যদিন ঠিক একই রকম কিছু ডিবা.স্ট্যাকেক্সেঞ্জার.কম / সেকশনস / 12১২৯ / / দিয়ে যাচ্ছিলাম ... আমি পাঠ্য থেকে বহুভুজ তৈরি করছিলাম না, তবে বিন্দু এবং বহুভুজকে ছেদ করছিলাম ... আমি স্থানিক সূচকটি ব্যবহার করার জন্য নির্দিষ্ট করেছি পয়েন্টে, যার দুর্দান্ত গতির ফলাফল ছিল। আমি বহুভুজের উপর স্থানিক সূচকটি ব্যবহার করার চেষ্টা করেছি এবং খুব খারাপ পারফরম্যান্স পেয়েছি ... যা আপনার সমস্যার ঠিক বিপরীত বলে মনে হচ্ছে!
ডিপিএসএসপিশিয়াল

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

আপনার রেকর্ডগুলি পয়েন্ট উপস্থাপন করছে? তা বলা হয়নি। এছাড়াও, আপনি নিজের ব্যবহার সূচক বাক্য তৈরি করতে প্রকাশ করতে পারেন? এটি কি অটগ্রিড ছিল?
gischimp

আমি 'ভূগোল অটো গার্ড' এবং 'প্রতি বস্তু ঘর' = 4000 ব্যবহার করেছি 110 45 কে বহুভুজ দিয়ে 110+ মিলিয়ন পয়েন্ট ছেদ করেছে।
মাইকেল

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

উত্তর:


1

হিসাবে @Vince দ্বারা মন্তব্য :

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

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