MySQL测试表是否存在的最有效方法是什么?

时间:2012-02-13 22:44:35

标签: mysql

我正在尝试删除/减少应用程序中的浪费查询以提高速度。我检查了一个查询以查看表是否存在。它通过尝试从表中选择主键字段并将“限制1”添加到查询的末尾来执行此操作,以便它不会选择整个表。

我的问题是:最有效方式是确定某个表是否存在或是否存在更有效的方法?

有关更多信息,我可能无法从信息架构中进行选择,因为并非所有用户都可以访问该表

修改

该应用程序允许安装插件,其中一些集成了第三方系统。上述查询用于检查用户是否已正确输入第三方系统的数据库信息。首先,系统连接到数据库,如果可行,则尝试使用用户指定的表前缀

查询表

4 个答案:

答案 0 :(得分:1)

您可以使用SHOW TABLES命令。要测试它是否像某个名称一样,请尝试:

SHOW TABLES LIKE 'nameOfTable';

根据MySql Dev pageSHOW TABLES的完整规范是:

  

显示[FULL] TABLES [{FROM | IN} db_name]       [喜欢'模式'| WHERE expr]

     

SHOW TABLES列出给定数据库中的非TEMPORARY表。您还可以使用mysqlshow db_name命令获取此列表。 LIKE子句(如果存在)指示要匹配的表名。可以使用WHERE子句选择使用更一般条件的行,如第18.19节“扩展显示语句”中所述。

答案 1 :(得分:1)

你试过SHOW TABLES LIKE 'Tablename'吗?您可能也无法访问它。

答案 2 :(得分:1)

MySQL 5.0以后,这是这样做的方法:

SELECT COUNT(*)
       FROM information_schema.tables 
       WHERE table_schema = '[database name]'
             AND table_name = '[table name]';

我过去也这样做过:

`SHOW TABLES WHERE Tables_in_<database-name> = "<table-name>"`

答案 3 :(得分:0)

SHOW TABLES LIKE "tablename";

此处有更多示例和教程:http://www.electrictoolbox.com/check-if-mysql-table-exists/