0

我有一个表“table2”,它有一个名为“MYINDEX”的索引
我的问题是当我使用这个索引进行连接时:

select a from table1 left join table2 use index (MYINDEX)

是否等同于以下查询?

select a from table1 left join table2 use index (myindex)
4

2 回答 2

1

在 MySQL 中,数据库和表名可能区分大小写,具体取决于服务器操作系统和 mysqld 选项。列、索引、存储例程和事件名称始终不区分大小写。请参阅MySQL 文档

于 2012-11-09T00:58:31.960 回答
0

我之前的一篇文章之后,Linux 和 Windows 在两种操作系统存储表名的方式上存在差异(是否只允许小写)。这可以由lower_case_table_names系统变量控制。您的 Windows 安装可能将此值设置为 1,而您的 Linux 服务器将此值设置为 0。按照用户手册的“标识符大小写敏感性”部分,您有两个选择:

lower_case_table_names=1在所有系统上使用。这样做的主要缺点是,当您使用SHOW TABLESor时SHOW DATABASES,您看不到原始字母大小写的名称。

或者

lower_case_table_names=0在 Unix 和lower_case_table_names=2Windows 上使用。这将保留数据库和表名的字母大小写。这样做的缺点是您必须确保您的语句在 Windows 上始终以正确的字母大小写引用您的数据库和表名。如果您将语句转移到字母大小写很重要的 Unix,如果字母大小写不正确,它们将不起作用。

至于索引名称,我会以与数据库名称、表名称和/或列名称相同的方式处理它。为了安全起见,假设将来您可能会遇到此问题。

一些链接:

于 2012-11-09T01:34:23.057 回答