De acordo com Immerman , a classe de complexidade associada às consultas SQL é exatamente a classe de consultas seguras em (consultas de primeira ordem e operador de contagem): o SQL captura consultas seguras. (Em outras palavras, todas as consultas SQL têm uma complexidade em \ mathsf {Q (FO (COUNT))} , e todos os problemas em \ mathsf {Q (FO (COUNT))} podem ser expressos como uma consulta SQL.)
Com base nesse resultado, do ponto de vista teórico, existem muitos problemas interessantes que podem ser resolvidos com eficiência, mas não são expressáveis em SQL. Portanto, uma extensão do SQL ainda eficiente parece interessante. Então aqui está a minha pergunta:
Existe uma extensão do SQL (implementada e usada na indústria ) que captura (ou seja, pode expressar todas as consultas computáveis em tempo polinomial e nenhuma outra)?
Eu quero uma linguagem de consulta de banco de dados que stisfies todas as três condições. É fácil definir uma extensão que estenda o SQL e capture . Mas minhas perguntas são: se essa linguagem faz sentido do ponto de vista prático, quero uma linguagem que esteja sendo usada na prática. Se esse não é o caso e não existe essa linguagem, eu gostaria de saber se existe uma razão que torne essa linguagem desinteressante do ponto de vista prático? Por exemplo, as consultas que surgem na prática geralmente são simples o suficiente para que não haja necessidade dessa linguagem?