我正在尝试删除/减少应用程序中的浪费查询以提高速度。我检查了一个查询以查看表是否存在。它通过尝试从表中选择主键字段并将“限制1”添加到查询的末尾来执行此操作,以便它不会选择整个表。
我的问题是:最有效方式是确定某个表是否存在或是否存在更有效的方法?
有关更多信息,我可能无法从信息架构中进行选择,因为并非所有用户都可以访问该表
修改
该应用程序允许安装插件,其中一些集成了第三方系统。上述查询用于检查用户是否已正确输入第三方系统的数据库信息。首先,系统连接到数据库,如果可行,则尝试使用用户指定的表前缀
查询表答案 0 :(得分:1)
您可以使用SHOW TABLES
命令。要测试它是否像某个名称一样,请尝试:
SHOW TABLES LIKE 'nameOfTable';
根据MySql Dev page,SHOW 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/