一些关于索引的疑问
1.作为排序条件的“order by”后面的字段时如何使用索引文件?如:“select * from Table where Field1= "aaa " and Field3= "bbb " order by Field2, Field1”,这个语句使用索引文件包含的字段是“Field1, Field2, Field3”还是“Field1,Field3”呢?
2.联合查询的原理是什么呢?如“select * from Table1, Table2 where Table1.Field1 = ' ' and Table2.Field1 = ' ' and Table1.Field3 = ' ' and Table1.Field2 == Table2.Field2”,要如何为这个语句创建索引文件呢?
这些问题是我看过手册后的疑问,并不是没有看手册,所以还希望大家多些指点,少些建议(如“建议查手册”或“买本XXX书看”)。另外还希望高手能给一些使用索引的建议。
------解决方案--------------------1.可以用explain+select看一看MYSQL到底是用哪个索引.我试了一下,如果只有“Field1, Field2, Field3”,“Field1,Field3”这两个索引组合在的话,MYSQL用的是第二个,但如果加多一个索引“Field1,Field3,Field2”的话,那MYSQL用的是新建的那个。
2.对于这个问题,我也一直想问,当这样写联合查询时,MYSQL到底是先join再where还是先where再join.如果是我建,我会在Table2建(Field2,Field1),在Table1建(Field1,Field3);
------解决方案--------------------1.只取 Field1,Field3
2.Table2建(Field2,Field1),在Table1建(Field1,Field3,Field2);
解答完毕。