Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从索引本身检索数据?_Php_Mysql_Indexing - Fatal编程技术网

Php 从索引本身检索数据?

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、日期,或者是否需要访问磁盘 谢谢 是,它只能使用索引检索数据 是的,它仍然需要访问磁盘,因为磁盘是索引所在的位置。索引和表一样

我在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、日期,或者是否需要访问磁盘


谢谢

是,它只能使用索引检索数据


是的,它仍然需要访问磁盘,因为磁盘是索引所在的位置。

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