小编Kev*_*sen的帖子

加快MySQL中的行计数

假设,为了便于说明,您使用包含三列的简单MySQL"books"表运行库:

(身份,职称,身份)

  • id是主键
  • title是这本书的标题
  • 状态可以是描述书籍当前状态的枚举(例如,可用,检查,处理,丢失)

报告每个州有多少本书的简单查询是:

SELECT status, COUNT(*) FROM books GROUP BY status
Run Code Online (Sandbox Code Playgroud)

或者专门找到有多少本书:

SELECT COUNT(*) FROM books WHERE status = "AVAILABLE"
Run Code Online (Sandbox Code Playgroud)

但是,一旦表增长到数百万行,这些查询需要几秒钟才能完成.在"状态"列中添加索引似乎不会对我的体验产生影响.

除了定期缓存结果或在每次书籍更改状态(通过触发器或其他机制)时在单独的表中显式更新摘要信息,是否有任何加速这些类型查询的技术?似乎COUNT查询最终查看每一行,并且(不知道更多细节)我有点惊讶,这些信息无法以某种方式从索引中确定.

UPDATE

使用具有200万行的样本表(带有索引"状态"列),我对GROUP BY查询进行了基准测试.使用InnoDB存储引擎,查询在我的机器上需要3.0 - 3.2秒.使用MyISAM,查询需要0.9 - 1.1秒.在任何一种情况下,计数(*),计数(状态)或计数(1)之间没有显着差异.

MyISAM无疑要快一点,但我很想知道是否有办法让等效查询运行更快(例如10-50毫秒 - 足够快,可以在低流量站点的每个网页请求上调用)没有缓存和触发器的精神开销.听起来答案是"没有办法快速运行直接查询"这是我的预期 - 我只是想确保我没有错过一个简单的替代方案.

mysql indexing optimization count

41
推荐指数
4
解决办法
3万
查看次数

Python中灵活的数字字符串解析

是否有任何Python库可以帮助解析和验证数字字符串超出内置float()函数支持的范围?例如,除了简单数字(1234.56)和科学记数法(3.2e15)之外,我希望能够解析如下格式:

  • 逗号的数字:2,147,483,647
  • 名字很大:55亿
  • 分数:1/4

我做了一些搜索,找不到任何东西,但如果这样的库还没有存在,我会感到惊讶.

python validation parsing numbers

7
推荐指数
1
解决办法
1763
查看次数

用于跨平台C/C++开发的资源

有哪些资源可以帮助编写跨多个平台和编译器的C/C++代码?例如,我经常发现自己提出的问题如下:

  • 在各种编译器和环境中自动定义哪些预处理器宏?(例如__GCC__,WIN32,__WIN32__,__CYGWIN__)
  • 哪些版本的编译器和标准库支持相对较新的"标准"函数(例如C99长双三角函数sinl(),cosl(),...)
  • 当没有单个便携式功能似乎存在时,在不同平台上可用于执行典型任务的功能是什么?(例如,以亚秒精度获得当前时间)

我经常写代码应该编译在Linux/GCC,cygwin的,mingw32的,和Visual Studio,我经常要比较来自多个来源的说明(Linux手册页,MSDN,编译器文档),以获得我需要的信息.这一定是开发人员一直遇到的问题 - 是否有任何资源将这些信息编译成易于理解的参考?

(对于这个问题,我对wxWidgets或boost等跨平台库并不特别感兴趣.我对那些可以帮助某人编写自己的跨平台库或程序的资源或技术更感兴趣.)

编辑:这是我正在寻找的页面类型的示例:http://predef.sourceforge.net/precomp.html.对各种编译器/环境以及可用于识别它们的预处理器宏的一个很好的调查.这将是伟大的发现,跨平台相比几乎相当于功能类似的资源(如gmtime_r()或FTIME()在Linux中VS _gmtime_s()或Windows _ftime())时,没有共同的功能存在.

c c++ portability

6
推荐指数
2
解决办法
958
查看次数

标签 统计

c ×1

c++ ×1

count ×1

indexing ×1

mysql ×1

numbers ×1

optimization ×1

parsing ×1

portability ×1

python ×1

validation ×1