[问题][SQL]关于C++使用数据库

楼主: zo6596001 (超帅肥宅)   2019-10-26 17:07:46
开发平台(Platform): (Ex: Win10, Linux, ...)
Centos7,Fedora30
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC,G++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
Mysql数据库
问题(Question):
想询问一下在C++中使用SQL比较常用的方法。
目前查到了有 SqLite,SQLAPI++,MySQL Connector/C
完全不知道该使用哪一个...
喂入的资料(Input):
一个带有属性、图片档名的.txt档,结构如右: [属性],档名\n
资料量约有30万行
预期结果:
能够快速查找资料。
补充说明(Supplement):
用读档的方式找档名太慢了,30万行随便找找都要超过10分钟。
所以我才想用数据库,但是C++的数据库似乎没那么简单。
希望各位能够给我点建议~谢谢~。
作者: loveme00835 (发箍)   2019-10-26 17:43:00
你读档是怎么找的?
作者: nh60211as   2019-10-26 20:03:00
要不要先试试把档名读进来然后建tree再找
作者: Schottky (顺风相送)   2019-10-26 20:28:00
如果拼速比不过 grep 何不直接用 grep XDDDD一个不到 20MB 的小档案找个十分钟是有点久但问题绝对不是出在数据库上
作者: loveme00835 (发箍)   2019-10-26 22:10:00
依你现在的逻辑, 用数据库可能也不会完全发挥特性瓶颈在字串比对这里, 太多余了, 你可以先做前处理分成几个只拥有部分资讯的档案, 这个观念你在数据库建表也用得到
作者: Schottky (顺风相送)   2019-10-26 22:40:00
我觉得瓶颈不太像是在 strcmp(),凶手另有其人但没有完整程式码也没办法诊断,我的水晶球送修了增加属性就算是用数据库一样麻烦好吗,还要加数据库字段txt 档你用 python 写个程式去每行加上新属性还不是一样sqlite 和 mysql 我都用过,你这状况我会选 sqlite因为你只是要读 local 资料档,sqlite 不用架 server反正你有兴趣玩 SQL 当然是趁年轻尽量试试看 XD
作者: loveme00835 (发箍)   2019-10-27 00:11:00
那问题来了: 你觉得时间复杂度真的是 O(n^2) 吗? 有轮子你也要会开才行
作者: taies (akira)   2019-10-27 00:29:00
想问问每个档案都要确认存在的目的是? 感觉主要慢在这
作者: loveme00835 (发箍)   2019-10-27 00:41:00
简单举个例子, 创一个 List-a.txt 档案里面包含的只有档名是 a 开头的项目, 这样简单的处理就可以让搜寻速度快不少, 还有如果你只是想搜寻档名, 为什么连属性也要一并读进来? 搜寻的方法有很多, 你却选了最烂的然后说想用数据库加速, 结果数据库也是另外建索引阿! 而且前面关键字都给了, 谷歌一下看范例应该不难, 怕是怕连搜寻方法都懒得想, 那建表格看 API 文件更难我想你应该也做不了
作者: Schottky (顺风相送)   2019-10-27 01:15:00
好好一个 O(N) 的程式被写成 O(N^2) 是发生什么事 XD就算你每个档案都要确认存在,那还是 O(N+N) 而已啊我还是那句,想用 SQL 数据库就 sqlite 最简便但问题是 sqlite 解决不了你的 O(N^2)
作者: taies (akira)   2019-10-27 01:44:00
如果只是要练习数据库的话 我觉得换个例子会比较好至于要换哪种 我没用过数据库没办法给建议了
作者: Schottky (顺风相送)   2019-10-27 10:20:00
怎么用数据库,官网就有说明文件和程式范例https://www.sqlite.org/quickstart.html 直接抄就好
作者: klsdf (静雨澪)   2019-10-29 23:27:00
QT的QODBC可以研究不会编了话应该也有编好的lib能用
作者: tomjpsun (汤姆熊)   2019-11-25 15:07:00

Links booklink

Contact Us: admin [ a t ] ucptt.com