মাইএসকিউএল-তে একটি ডাটাবেস বা টেবিলের জন্য সূচকগুলি কীভাবে দেখবেন?


485

আমার ডাটাবেসের কোনও সূচী আছে কিনা তা আমি কীভাবে দেখতে পারি?

কিভাবে একটি নির্দিষ্ট টেবিল জন্য?


কেবলমাত্র ব্যবহার করুন: sp_helpindex 'টেবিলের নাম'
ব্যবহারকারীর 3772443

"কেবলমাত্র ব্যবহার করুন: sp_helpindex 'টেবিলের নাম'" যা এসকিউএল সার্ভার হতে পারে (এমএসএসকিউএল) @ ব্যবহারকারী3772443 মাইএসকিউএল নয়
রায়মন্ড নিজল্যান্ড

উত্তর:


793

নির্দিষ্ট টেবিলের জন্য সূচকটি দেখতে আইডেক্সটি দেখান:

SHOW INDEX FROM yourtable;

নির্দিষ্ট স্কিমাতে সমস্ত টেবিলের জন্য সূচীগুলি দেখতে আপনি INFORMATION_SCHEMA থেকে STATISTICS টেবিলটি ব্যবহার করতে পারেন:

SELECT DISTINCT
    TABLE_NAME,
    INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'your_schema';

ক্লজটি সরিয়ে ফেলা আপনাকে সমস্ত স্কিমায় সমস্ত সূচি প্রদর্শন করবে।


10
নোট করুন যে DISTINCTকীওয়ার্ডটি কিছু সূচকে মুখোশ দেবে - আমার একটি টেবিল রয়েছে যেখানে সূচকের একই নাম রয়েছে তবে দুটি পৃথক কলামে ব্যবহৃত হয়, সুতরাং এখানে তথ্য স্কিমার উদাহরণটি কেবল একটি সূচি প্রদর্শন করবে।
বেন

from mydbলিয়েরকের উত্তরে প্রদর্শিত হিসাবে আমাকে যুক্ত করতে হয়েছিল।
রাতের

@ মার্ক বাইয়ার্স নিজেই সূচি টেবিল দেখার উপায় আছে? কীভাবে এসকিউএল অভ্যন্তরীণভাবে সূচক ফাইল তৈরি করে? এটি সূচক টেবিল থেকে মূল সারণীতে রেকর্ডের পয়েন্টার কীভাবে সঞ্চয় করে?
যযন্ত খ

সুতরাং আমার টেবিলটি INFORMATION_SCHEMA.STATISTICS এ প্রদর্শিত হবে তবে এটিতে কেবল একটি সূচী_নাম রয়েছে। কলামের নামটি নির্দেশ করার জন্য কোনও অতিরিক্ত প্রবেশ নেই। অন্যান্য সমস্ত সারণীতে একাধিক এন্ট্রি রয়েছে যা এরকম কিছু দেখায়: প্রাথমিক সি 1, সি 2 যেখানে সি 1, সি 2 সম্মিলিত প্রাথমিক কী তৈরি করে। কোন ধারণা কেন?
স্টিভার্স

56

আপনি যদি একবারে সমস্ত ডাটাবেস জুড়ে সমস্ত সূচি দেখতে চান:

use information_schema;
SELECT * FROM statistics;

4
: একটি এক-লাইনের হিসাবেSELECT * FROM information_schema.statistics;
enharmonic


7

আপনি এই ক্যোয়ারীটি সূচকের সংখ্যা এবং নির্দিষ্ট ডাটাবেসে প্রতিটি টেবিলের সূচকের নামগুলি পেতে ব্যবহার করতে পারেন।

SELECT TABLE_NAME,
       COUNT(1) index_count,
       GROUP_CONCAT(DISTINCT(index_name) SEPARATOR ',\n ') indexes
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'mydb'
      AND INDEX_NAME != 'primary'
GROUP BY TABLE_NAME
ORDER BY COUNT(1) DESC;

5

আমি এই কোয়েরিটি প্রস্তাব করছি:

SELECT DISTINCT s.*
FROM INFORMATION_SCHEMA.STATISTICS s
LEFT OUTER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t 
    ON t.TABLE_SCHEMA = s.TABLE_SCHEMA 
       AND t.TABLE_NAME = s.TABLE_NAME
       AND s.INDEX_NAME = t.CONSTRAINT_NAME 
WHERE 0 = 0
      AND t.CONSTRAINT_NAME IS NULL
      AND s.TABLE_SCHEMA = 'YOUR_SCHEMA_SAMPLE';

আপনি সমস্ত সূচি কেবল সূচকটি পেয়েছেন।

বিবেচনা।


3

সিকোয়েন্স ক্রমের এক কলামে সূচি প্রতি সমস্ত সূচীকরণ কলামগুলি পেতে।

SELECT table_name AS `Table`,
       index_name AS `Index`,
       GROUP_CONCAT(column_name ORDER BY seq_in_index) AS `Columns`
FROM information_schema.statistics
WHERE table_schema = 'sakila'
GROUP BY 1,2;

সূত্র: http://blog.9minutesnooze.com/mysql-information-schema-indexes/


2

ডিবিতে সমস্ত অক্ষম সূচকগুলি পরীক্ষা করতে

SELECT INDEX_SCHEMA, COLUMN_NAME, COMMENT 
FROM information_schema.statistics
WHERE table_schema = 'mydb'
AND COMMENT = 'disabled'

2

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

select * from sys.schema_index_statistics;

পল আপনি কোন সরঞ্জামটি ব্যবহার করছেন? এই কোডটি মাইএসকিএল ওয়ার্কবিনেচের জন্য কাজ করে।
গণেশ গিরি

আমি এটি মাইএসকিউএল শেল
পল বাসেনকো

আপনি কি এটি মাইএসকিএল ওয়ার্কবেঞ্চ ব্যবহার করে দেখতে পারেন? sys.schema_index_statistics থেকে * নির্বাচন করুন;
গণেশ গিরি

2

সূচকযুক্ত ক্ষেত্রগুলির জন্য সংশ্লিষ্ট টেবিলে সারণীর নাম এবং কলামের নাম পাওয়ার জন্য এটি আমার ক্ষেত্রে কাজ করে।

SELECT TABLE_NAME , COLUMN_NAME, COMMENT 
FROM information_schema.statistics
WHERE table_schema = 'database_name';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.