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


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.