日期:2014-05-16  浏览次数:20895 次

一些关于索引的疑问
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);

解答完毕。