数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

1
如何在SQL Server 2008中强制删除数据库
我试图强制删除数据库,但是删除数据库后,当我尝试重新创建数据库时,出现了错误 无法创建文件C:\ Program Files ..... [数据库名称] .mdf,因为它已经存在 这是我的强制删除数据库的查询 Use master; ALTER database [databasename] set offline with ROLLBACK IMMEDIATE; DROP database [databasename]; 我了解到,以上查询正在删除数据库,但并未删除.ldf和.mdf文件。如何彻底删除数据库? 普通查询 Drop database [databasename] ; //deletes the database completely, including the ldf and mdf's. 如何强制删除数据库,该数据库也会删除.mdf和.ldf文件?


4
使用LEFT JOIN或NOT EXISTS之间的最佳实践
在使用LEFT JOIN或NOT EXISTS格式之间有最佳实践吗? 相对于另一个使用什么有什么好处? 如果没有,则应首选? SELECT * FROM tableA A LEFT JOIN tableB B ON A.idx = B.idx WHERE B.idx IS NULL SELECT * FROM tableA A WHERE NOT EXISTS (SELECT idx FROM tableB B WHERE B.idx = A.idx) 我在Access中使用SQL Server数据库查询。


8
SQL Server的MAXDOP设置算法
设置新的SQL Server时,我使用以下代码来确定设置的良好起点MAXDOP: /* This will recommend a MAXDOP setting appropriate for your machine's NUMA memory configuration. You will need to evaluate this setting in a non-production environment before moving it to production. MAXDOP can be configured using: EXEC sp_configure 'max degree of parallelism',X; RECONFIGURE If this instance is hosting a …

4
MySQL以任何方式导入巨大的(32 GB)sql转储更快?
我有一个巨大的32 GB SQL转储,需要导入MySQL。我以前不必导入这么大的SQL转储。我照常做: mysql -uroot dbname < dbname.sql 花费的时间太长了。一张桌子大约有3亿行,大约3个小时就达到了150万行。因此,似乎整个过程将花费600个小时(即24天),并且是不切实际的。所以我的问题是,有没有更快的方法可以做到这一点? 进一步的信息/发现 这些表都是InnoDB,并且没有定义外键。但是,有很多索引。 我没有访问原始服务器和数据库的权限,因此无法进行新备份或进行“热”复制等。 此处innodb_flush_log_at_trx_commit = 2建议的设置似乎并没有(明显可见/指数)改善。 导入期间(从MySQL Workbench)的服务器统计信息:https : //imgflip.com/gif/ed0c8。 MySQL版本是5.6.20社区。 innodb_buffer_pool_size = 16M和innodb_log_buffer_size = 8M。我需要增加这些吗?



4
索引搜索与索引扫描
在查看运行缓慢的查询的执行计划时,我注意到一些节点是索引查找,而某些节点是索引扫描。 索引搜索和索引扫描之间有什么区别? 哪个表现更好? SQL如何选择一个? 我意识到这是3个问题,但我认为回答第一个问题将解释其他问题。


9
如何在PostgreSQL中使用currval()获取最后插入的ID?
我有一张桌子: CREATE TABLE names (id serial, name varchar(20)) 我想要该表中的“最后插入的ID”,而无需RETURNING id在插入时使用。似乎有一个功能CURRVAL(),但我不知道如何使用它。 我尝试过: SELECT CURRVAL() AS id FROM names_id_seq SELECT CURRVAL('names_id_seq') SELECT CURRVAL('names_id_seq'::regclass) 但它们都不起作用。如何使用currval()获取最后插入的ID?

1
减少mysql中ibdata大小的最佳方法是什么?
我有一些生产服务器,其ibdata文件大小每天都在增加。 它已经消耗了290GB的空间。 服务器中的表主要是InnoDB,并且有大量的读写请求。 日志文件的大小也在增加。表中有大量数据。 如何控制两者的增长规模? 我没有使用innodb_file_per_table。
63 mysql  innodb 

4
MySQL:创建索引(如果不存在)
如果不存在,是否可以在MySQL中创建索引? MySQL不支持明显的格式: CREATE INDEX IF NOT EXISTS index_name ON table(column) ERROR 1064 (42000): You have an error in your SQL syntax;... MySQL版本(mysql -V)是5.1.48,但我认为MySQL CREATE INDEX IF NOT EXIST在所有版本中都缺乏此功能。 只有在MySQL中尚不存在索引时,才创建索引的正确方法是什么?


3
检查约束只有三列之一为非空
我有一个(SQL Server)表,其中包含3种类型的结果:FLOAT,NVARCHAR(30)或DATETIME(3个单独的列)。我想确保对于任何给定的行,只有一列具有结果,其他列为NULL。实现此目的最简单的检查约束是什么? 为此,本文试图将捕获非数字结果的功能改造为现有系统。在表上添加两个新列并添加约束以防止每行出现多个结果是最经济的方法,不一定是正确的方法。 更新:抱歉,数据类型为snafu。可悲的是,我不打算将指示的结果类型解释为SQL Server数据类型,而只是一般术语,现在已修复。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.