Php 从索引本身检索数据?
我在MySQL中有以下查询:Php 从索引本身检索数据?,php,mysql,indexing,Php,Mysql,Indexing,我在MySQL中有以下查询: SELECT sid, date FROM table WHERE wid = 12938248 AND url = 'example.com/landingpage' 前提是我有这样一个索引: CREATE INDEX testindex ON table (wid,url,sid,date) MySQL是否能够从索引本身检索sid、日期,或者是否需要访问磁盘 谢谢 是,它只能使用索引检索数据 是的,它仍然需要访问磁盘,因为磁盘是索引所在的位置。索引和表一样
SELECT sid, date
FROM table
WHERE wid = 12938248 AND url = 'example.com/landingpage'
前提是我有这样一个索引:
CREATE INDEX testindex ON table (wid,url,sid,date)
MySQL是否能够从索引本身检索sid、日期,或者是否需要访问磁盘
谢谢 是,它只能使用索引检索数据
是的,它仍然需要访问磁盘,因为磁盘是索引所在的位置。索引和表一样位于磁盘上,因此“它需要访问磁盘”将
EXPLAIN
添加到查询的前面,mysql将告诉您它是否可以,EXPLAIN中的哪一列告诉我?它表示这是一个范围类型的查询,正在浏览4212行。您将在额外的列中看到使用索引。它表示使用where,而不使用索引。这是否意味着它正在读取实际的行,并且对索引本身不满意?啊,好的。但是由于它可以从索引本身得到答案,它仍然是尽可能快的,对吗?取决于mysql是否决定它可以通过覆盖索引得到结果,更改where子句的顺序可能会抛出mysql选项。我怎么知道正确的顺序是什么?我一直在尝试使用EXPLAIN SELECT来判断查询的性能。它可能会根据使用MyISAM或InnoDB(与计算索引基数的方法不同)以及表的大小而变化。例如,一个非常短的表可以通过简单的表扫描来访问,即使索引存在。IIRC,一般规则是将最有区别的列放在索引的第一位?